plone.app.event


Nameplone.app.event JSON
Version 5.1.2 PyPI version JSON
download
home_pagehttps://github.com/plone/plone.app.event
SummaryThe Plone calendar framework
upload_time2024-04-16 19:33:15
maintainerNone
docs_urlNone
authorPlone Foundation
requires_python>=3.8
licenseGPL version 2
keywords plone event
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            plone.app.event
===============

``plone.app.event`` is the calendaring framework for Plone. 

It provides 

- Dexterity behaviors, 
- timezone support, 
- RFC5545 icalendar export, 
- recurrence support, 
- event views 
- and a lot more.

It is part of the `CMS Plone <https://plone.org>`_ and does not need additional installation steps.

Source Code
===========

Contributors please read the document `Contributing to Plone <https://6.docs.plone.org/contributing/index.html>`_

Sources are at the `Plone code repository hosted at Github <https://github.com/plone/plone.dapp.event>`_.


Installation
============


``plone.app.event`` only provides Dexterity behaviors to build own types based on them.  If you want to install a Dexterity based Event type, you can simply use ``plone.app.contenttypes`` 1.2a3 or up.

Depend on one (or both) of these setuptools dependencies::

    'plone.app.event'


The zcml dependency is be loaded automatically by z3c.autoinclude.

Then install plone.app.event via the controlpanel or by depending on the following GenericSetup profile in metadata.xml::

    plone.app.event:default


Upgrading from plone.app.event 1.x
----------------------------------

TODO: ...

There are upgrade steps in plone.app.contenttypes for 1.x to 2.0. That has to be revisited and refactored.


Upgrading from plone.app.event 1.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TODO: ...

The "ploneintegration" setuptools extra, subpackage and GenericSetup profile have been gone. You just need to remove these dependencies from your setup and use the "plone.app.event.at:default" profile instead, if you plan to use the Archetypes based ATEvent type.

Use the provided upgrade steps to upgrade Dexterity behaviors: Attribute storage (Migrate fields from annotation storage to attribute storage) and New IRichText behavior (Enable the new IRichText instead of the IEventSummary behavior).


Upgrading from Products.ATContentType to plone.app.event
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. warning::

  Please backup before upgrading and check the upgraded contents for validity!

If you want to upgrade Products.ATContentTypes based ATEvents to plone.app.event ones, there is an upgrade step for that: "Upgrades old AT events to plone.app.events" (Metadata version 1 to 2). In order to use it, go to Plone Control Center -> ZMI -> portal_setup -> Upgrades. Select "plone.app.event.at:default" profile and click "Show old upgrades". Select the upgrade step and run it.

You might also need to "clear and rebuild" the catalog after upgrading. You can do so at Plone Control Center -> ZMI -> portal_catalog -> Advanced (this may take a while)


Upgrading to Dexterity
~~~~~~~~~~~~~~~~~~~~~~

Upgrade steps to migrate Products.ATContentTypes based ATEvents, plone.app.event based ATEvents or plone.app.event Dexterity example types (plone.app.event.dx.event) to plone.app.contenttypes Dexterity Events can be found within plone.app.contenttypes. This package utilizes plone.app.event's Dexterity behaviors for it's Event type.


Configuration
-------------

.. note::

  Don't forget to set the portal timezone!

After installation, please set your timezone in the plone date and time controlpanel (@@dateandtime-controlpanel). Otherwise time calculations are based on UTC and likely wrong for your timezone. Also set the first weekday setting for correct display of the first weekday in calendar views.


Changelog
=========

.. You should *NOT* be adding new change log entries to this file.
   You should create a file in the news directory instead.
   For helpful instructions, please see:
   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst

.. towncrier release notes start

5.1.2 (2024-04-16)
------------------

Bug fixes:


- Fix calculation of eventaccessor urls @1letter (#387)


5.1.1 (2023-10-07)
------------------

Internal:


- Require setuptools 68.2 or higher for building the package.
  When built with setuptools 68.1, you could not import the package, at least not an editable package.
  Note that you can still *install* this package with older setuptools versions.
  See `Plone meta issue 172 <https://github.com/plone/meta/issues/172>`_ for details.
  [maurits] (#172)


Tests


- Fix test_long_event when run around midnight of the first day of the month.
  Fixes `issue 334 <https://github.com/plone/plone.app.event/issues/334>`_.
  [maurits] (#334)


5.1.0 (2023-07-22)
------------------

New features:


- Cache the events from the 'Upcoming Events' portlet
  [frapell] (#351)


Internal:


- Update configuration files.
  [plone devs] (5ed054fb)


5.0.1 (2023-04-15)
------------------

Internal:


- Update configuration files and dependencies.
  [plone devs] (0b0246aa)


5.0.0 (2023-04-06)
------------------

Breaking changes:


- Breaking dependency cleanup: Move declaration of language independence of on IEventBasic fields to plone.app.multilingual.
  [jensens] (367-pam)


Bug fixes:


- Fix `expand_events` doubling the first occurrence with the original event
  [petschki] (#348)
- Fix date display for recurring `open_end` events and multi day `whole_day` events by correcting duration.
  [ksuess, petschki] (#362)


Internal:


- Update configuration files.
  [plone devs] (e380661b)


4.0.0 (2022-11-11)
------------------

Bug fixes:


- Fixed tests to work with icalendar 5.0.2, where ``;VALUE=DATE-TIME`` is not included because it is already the default.
  [maurits] (#450)


4.0.0b1 (2022-07-19)
--------------------

Bug fixes:


- Fix default i18n msgid values
  [erral] (#359)


4.0.0a9 (2022-05-24)
--------------------

Breaking changes:


- Code Style, pyupgrade, remove six, use plone.base, some overhaul.
  [jensens] (#356)


Bug fixes:


- Remove project-specific code from selectors in the event JavaScript.
  [thet] (355-2)
- Do frontend date widget calculation with datetime-native dates to simplify code better universal support. (355-3)
- Wrap JavaScript a immediately invoked function to not expose the functions in global namespace.
  [thet] (#355)
- Remove jQuery from event edit JS.
  [petschki] (#358)
- Removed z3c.autoinclude.plugin entrypoint. [maurits] (#3188)


4.0.0a8 (2022-04-07)
--------------------

New features:


- Use patternlib `pat-datetime-picker` for datetime fields
  in combination with its `after` option
  [petschki] (#346)
- PLIP 2780: textindexer, use here.
  [zworkb] (#2780)


Bug fixes:


- remove `plone-legacy` bundle and update eventedit script.
  [petschki, thet] (#350)


4.0.0a7 (2021-10-22)
--------------------

Bug fixes:


- Bring back date card for event listing.
  [petschki] (#345)


4.0.0a6 (2021-10-16)
--------------------

Bug fixes:


- Fix test for icalendar with missing VALUE for date (not date-time) of DTSTART/DTEND.

  If multiple value types are allowed for a component, the value type can only be omitted if it is the default type.
  The default type for DTSTART/DTEND is DATE-TIME.
  See RFC5545 3.2.20, 3.8.2.2 and 3.8.2.3.
  [thet] (#343)


4.0.0a5 (2021-09-01)
--------------------

Bug fixes:


- make expand_events return items after start/end limit (fixes https://github.com/plone/plone.app.event/issues/261)
  [fRiSi] (#261)


4.0.0a4 (2021-07-26)
--------------------

Bug fixes:


- Do not allow ``file:`` protocol in ical url.
  Previously, only ``file://`` was disallowed, but this left room for relative paths.
  Taken over from `PloneHotfix20210518 <https://plone.org/security/hotfix/20210518/server-side-request-forgery-via-event-ical-url>`_.
  [maurits] (#3274)


4.0.0a3 (2021-06-14)
--------------------

Bug fixes:


- Fix #330 traversal problem in the portlet_events template when an object in a folder is called "image"
  [sneridagh] (#330)


4.0.0a2 (2021-05-11)
--------------------

New features:


- Restructure event summary
  [agitator] (#328)


4.0.0a1 (2021-04-20)
--------------------

Breaking changes:


- Update for Plone 6 with Bootstrap markup
  NavBar in Upcoming/Past/iCal Navigation
  [1letter] (#326)


3.2.10 (2020-11-17)
-------------------

Bug fixes:


- Give validation error in ical importer when a ``file://`` URL is used.
  This could be a line of attack for a hacker.
  [maurits] (#3209)


3.2.9 (2020-09-21)
------------------

Bug fixes:


- Replaced deprecated ``plone.testing.z2`` imports with ``plone.testing.zope``, where possible.
  [maurits] (#3130)


3.2.8 (2020-09-07)
------------------

Bug fixes:


- Fixed deprecation warning for ``setDefaultRoles``.
  [maurits] (#3130)


3.2.7 (2020-04-20)
------------------

Bug fixes:


- Change markup for structured data schemas from ``data-vocabulary.org`` to ``schema.org``.
  Because google supports only schema.org - based definitions
  [1letter] (#312)


3.2.6 (2019-11-25)
------------------

Bug fixes:


- Fix Python2 vs. Python3 text and bytes handling in the calendar portlet. (#308)


3.2.5 (2019-10-12)
------------------

Bug fixes:


- Load zcml of ``plone.resource`` for our use of the ``plone:static`` directive.
  [maurits] (#2952)


3.2.4 (2019-06-27)
------------------

Bug fixes:


- Add regression-test for allowed_attributes. See https://github.com/zopefoundation/Zope/issues/397
  [pbauer] (#306)


3.2.3 (2019-03-21)
------------------

Bug fixes:


- fix SearchableText indexer for Python 3
  [petschki] (#302)


3.2.2 (2019-03-03)
------------------

New features:


- - Add title in view definition, to allow translations. [cekk] (#298)


Bug fixes:


- Close files in tests (#300)


3.2.1 (2018-10-30)
------------------

Bug fixes:

- Fixed searchable text indexer to avoid breaking when there is no text.
  [davisagli]
- iCalendar categories are expected as a comma separated string, not as multiple entries.
  See https://www.kanzaki.com/docs/ical/categories.html
  Needs fixed iCalendar >4.0.2
  [jensens]


3.2.0 (2018-09-23)
------------------

New features:

- Remove ``Pragma: no-cache`` header for icalendar exports.
  The ``Pragma`` header is HTTP 1.0 and the caching strategy on icalendar exports should better be defined by integrators.
  [thet]

Bug fixes:

- Python 3 compatibility.
  [pbauer]

- Make sure to include the 'Content-Length' header for ical exports
  [frapell]

- Update plone.app.event resources. Requires plonetheme.barceloneta >= 1.9.
  [agitator]


3.1.1 (2018-06-04)
------------------

Breaking changes:

- Introduce ``spell_date`` and deprecate ``date_speller`` in ``plone.app.event.base``.
  spell_date does only optionally accept an context where date_speller the context was required.
  [thet]

- Use plone i18n domain.
  [gforcada]

Bug fixes:

- Remove obsolete event_icon.png and corresponding css rule.
  Fixes: #283.
  [thet]

- Fix CSS syntax error in event.css
  [robbuh]

- Fix icalendar export for folderish events which are containers with a ``__getitem__`` method.
  [thet]

- Python 3 compatibility.
  [pbauer]

- Fix future_events French translation.
  [vincentfretin]

3.1 (2018-02-04)
----------------

New features:

- When setting start and end via the IEventAccessor, convert it to a Python datetime with timezone information.
  [thet]

- iCal export:
  - More response headers.
  - Support property parameters.
  - Add ``geo`` for (lat, lng) geolocation coordinates. This method is not implemented and can be used by addons to provide that feature.
  - Factor-out all event components from ``ICalendarEventComponent.to_ical`` method into separate properties, so that individual properties can be easier overloaded in subclasses.
  - Check, if event is really an event before ical-exporting. Fixes a problem when a collection mixes event and non-event like result objects.
  - Add ``rel="nofollow"`` to ical export links for robots to not download them.
  [thet]

- add full danish translation
  [tmog]

Bug fixes:

- Add Python 2 / 3 compatibility.
  [pbauer]
- Language independence for fields: `start`, `end`, `whole_day`, `open_end`
  [agitator]

- iCalendar import: Fix usage of ``sync_uid``, which wasn't correctly implemented since plone.app.event 2.0.
  [thet]

- Raise ``AttributeError`` when attempting to index an empty location attribute value.
  [thet]

- Fix portlet get_calendar_url with unicode search_base.
  [bsuttor]

- fallback search base URL for calendar/event portlets to NavigationRoot [petschki]


3.0.7 (2017-11-24)
------------------

Bug fixes:

- Fixed check for events iterable in Zope 4. [davisagli]


3.0.6 (2017-09-05)
------------------

Bug fixes:

- Improve the JavaScript to wait for the PickADate pattern to be initialized.
  Follow better JS practices.
  [thet]

- Remove broken floating layout of start, end, whole_day and open_end fields.
  [thet]


3.0.5 (2017-07-03)
------------------

New features:

- option to override thumb /icon behavior individually for portlet (suppress thumbs, thumb size)
  https://plone/Products.CMFPlone#1734 [fgrcon]
  applied https://github.com/plone/Products.CMFPlone/issues/1483
  [fgrcon]

Bug fixes:

- fixed css-classes for thumb scales ...
  https://github.com/plone/Products.CMFPlone/issues/2077
  [fgrcon]


3.0.4 (2017-02-12)
------------------

Bug fixes:

- Fix views should show the next upcoming recurrence of event.
  Fixes: https://github.com/plone/plone.app.event/issues/185
  [allusa]


3.0.3 (2016-11-17)
------------------

Bug fixes:

- Remove requirement of ``collective.elephantvocabulary`` which is no longer used.
  [davisagli]


3.0.2 (2016-10-05)
------------------

Breaking changes:

- Really remove Plone 4 compatibility code.
  [thet]

Bug fixes:

- Fix format of tooltip in calendar portlet.
  Fixes: https://github.com/plone/Products.CMFPlone/issues/1046
  [fgrcon]

- Fix bug when creating indexes on install. It was not detecting existing indexes correctly.
  [vangheem]

- Do not index `sync_uid`, `start` and `end` fields if they are empty.
  [bsuttor]

- Update french translations.
  [bsuttor]

- Fixing a typo in dutch translations.
  [andreesg]



3.0.1 (2016-09-16)
------------------

Bug fixes:

- Update Traditional Chinese Translations.
  [l34marr]


3.0 (2016-08-12)
----------------

Breaking changes:

.. note::
    This release depends on ``plone.app.z3cform >= 2.0.1``, which is only available for Plone 5.1.
    This is a backwards incompatible change, which satisfy a major version change for plone.app.event.
    Consequently, Plone 4 compatibility code will be removed in this release.

New features:

- Use ``schema.URI`` instead of ``schema.TextLine`` for ``event_url`` field.
  [thet]

- Make JavaScript date/time update work with optional start/end dates.
  [thet]

- Make use of more generic selectors in JavaScript, so that JavaScript works also for derived classes.
  [thet]

- Configure custom css classes for all event behavior fields.
  This makes it easier to use same selectors also for derived behaviors.
  Needs ``plone.app.z3cform >= 2.0.1``.
  [thet]

- Use ``plone.autoform.directives`` for manipulating field widgets instead of overriding the default Fieldwidget adapters.
  [thet]

Bug fixes:

- Fixed possible cross site scripting (XSS) attack in location field.  [maurits]

- Remove Archetypes based JavaScript code.
  [thet]

- Don't validate the ``validate_start_end`` invariant, if start or end are ``None``.
  This can happen on non-required, default empty start or end fields during editing.
  [thet]


2.0.9 (2016-05-15)
------------------

New features:

- Changed the color of the navigation in the calendar widget to grey(from blue) using inherit.
  see https://github.com/plone/Products.CMFPlone/issues/1445
  [janga1997]


2.0.8 (2016-04-29)
------------------

New:

- Added short-names for behaviors.
  [jensens]

Fixes:

- Don't break ``base.dates_for_display`` and the ``formatted_date`` content provider, if event object has no start or end dates.
  It might come from a potential event.
  [thet]


2.0.7 (2016-03-31)
------------------

New:

- Translation locales of plone.app.event to Russian [serge73]

Fixes:

- When trying to access an occurrence in the future outside the range of indexed occurrences, do not raise ``StopIteration``.
  Instead fall back to raise ``AttributeError``.
  [frapell]

- Ensure that unittests reset the timezone information
  [do3cc]


2.0.6 (2016-01-08)
------------------

Fixes:

- Change the behaviors text getter to use ``output_relative_to`` with the
  current context. This correctly transforms relative links. See:
  https://github.com/plone/plone.app.textfield/pull/17
  [thet]


2.0.5 (2015-11-25)
------------------

New:

- Show thumbs when leadimage behavior enabled for eventtype:
  see  https://github.com/plone/Products.CMFPlone/issues/1226
  [fgrcon]

Fixes:

- Cleanup tasks: Only install the plone.app.widgets profile for Plone 4.3.
  Remove the unnecessary ``plone50`` setup.py extra section. Fix
  plone.app.event to also work with plone.app.z3cform versions below < 1.0.
  [thet]

- Cleanup buildout: Remove sources.cfg, versions.cfg, test.cfg, test-43.cfg and
  test.cfg. Since this package is merged, it doesn't make much sense to
  maintain separate version and sources files to extend from. Tests and
  development environment is built in the buildout.cfg and buildout-43.cfg
  files. Remove bootstrap.py - use ``virtualenv .; ./bin/pip install
  zc.buildout`` instead.
  [thet]

- In tests, use ``selection.any`` in querystrings.
  Issue https://github.com/plone/Products.CMFPlone/issues/1040
  [maurits]


2.0.4 (2015-10-28)
------------------

Fixes:

- Fixed the occurrences calculation to reliably return an Event instead of
  Occurrence object for the originating event. There was a bug introduced by a
  newer pytz version.
  [thet]


2.0.3 (2015-09-27)
------------------

- Plone 4 compatibility for ``get_default_page`` import.
  [thet]


2.0.2 (2015-09-21)
------------------

- Update French translations
  [enclope]

- Resolve deprecation warning for getDefaultPage.
  [jensens]

- Fix word break on event linsting template
  [sneridagh]


2.0.1 (2015-09-20)
------------------

- Enable event-portlet by default.
  Fixes https://github.com/plone/Products.CMFPlone/issues/760
  [pbauer]

- Prevent negative number of items in event-portlet.
  [pbauer]

- Remove unittest2 dependency.
  [gforcada]

- Resolve deprecation warning for getDefaultPage.
  [fulv]


2.0 (2015-09-11)
----------------

- Updated basque translation
  [erral]


2.0b2 (2015-08-20)
------------------

- Unified event_listing style with plonetheme.barceloneta styles and added svg
  icons.
  [agitator]

- initialize events.js javascript after all patterns are initialized.
  [garbas]

- removing dependency on plone.app.contenttypes that introduce with latest
  changes to portlets code.
  [garbas]


2.0b1 (2015-07-18)
------------------

- Make configlets titles consistent across the site, first letter capitalized.
  [sneridagh]


2.0a13 (2015-07-15)
-------------------

- Fix some design issues in ``event_listing``.
  [pbauer]

- Remove superfluous ``for`` in behavior registrtions, which do not have a
  ``factory``.
  [fulv]

- For event listings, view-cache the ``events`` method, which is directly used
  in templates and also caches collection results instead of the
  ``_get_events`` method.
  [thet]

- Show only upcoming occurrences in the for ``@@event_summary`` for events with
  occurrences. On the last occurrence, only a link to all occurrences via
  ``@@event_listing`` is shown.
  [thet]

- Translation updates (num_more_occurrences).
  [thet]

- For event listings on collections, use the collection's ``item_count``
  attribute to limit the batch size.
  [thet]

- For the event portlet, don't cache the list of events on memoize instance,
  which creates a write transaction. Remove the caching until a solid cache key
  is found, which also works for multiple portlet instances.
  [thet]

- BBB portlets: do the version comparison with LooseVersion, so that
  Plone-style development version numbers like ``2.5.4.dev0`` also work.
  [thet]

- Let ``date_speller`` return the short, 2-letter weekday abbreviation instead
  of a 3-letter one.
  [thet]

- Remove inconsistency in date_speller and rename ``month`` and ``wkday`` keys
  to ``month_name`` and ``wkday_name``. Introduce ``month``, the non-zero
  padded numeric value of the current month, ``month2``, the zero-padded one,
  ``wkday``, the weekday number and ``week``, the weeknumber of the current
  year.
  [thet]

- Make configlets titles consistent across the site, first letter capitalized
  [sneridagh]


2.0a12 (2015-06-05)
-------------------

- Unwrap search_base for portlets, as it might be wrapped by the portlet
  renderer class. Fixes an error with getting the events to display.
  [thet]

- Import BBB superclasses from  plone.app.portlets.portlets.base so it works
  with plone.app.portlets 3.0 and up
  [frapell]


2.0a11 (2015-05-13)
-------------------

- Rerelease, because one of our test servers complains about the
  previous release.
  [maurits]


2.0a10 (2015-05-13)
-------------------

- For ``event_listing`` on Collections, ignore the Collection's sorting and use
  what the event listing's mode defines for sorting.
  [thet]

- Add support for Collections as data source for calendar and event portlets.
  [thet]

- Extend Collection support on ``event_listing`` for content items providing
  ``ISyndicatableCollection``.
  [thet]


2.0a9 (2015-05-04)
------------------

- Support for ``contentFilter`` on request for ``event_listing``.
  [thet]

- Fix ``ImageScalingViewFactory`` and add a custom ILeadImage viewlet for
  Occurrences. Fixes the display of ILeadImage images from the originating
  event in event views of occurrences by delegating to the parent object.
  [thet]

- Fix Plone 4.3 BBB z3c.form portlets to show their fields in Add/Edit Forms.
  [thet]

- Update Japanese translation.
  [terapyon]

2.0a8 (2015-03-26)
------------------

- Remove ``get_location`` view helper method. This was used to allow external
  addons (specifically ``collective.venue``) to override it and return a html
  link to a location object instead. Instead of this hack, which also only
  works for the location use case, override the necessary templates in your
  addons. In case of doubt, simplicity outweigh extensibility options.
  [thet]

- Change ``adapts`` and ``implements`` to their decorator equivalents
  ``adapter`` and ``implementer``.
  [thet]

- Change ``event_listing`` to search only in current context and below, not the
  whole portal by default. Remove the setting ``current_folder_only``, which
  was annotated to the context. Since the collection support is much better now,
  use them for custom searches.
  [thet]

- Fix a bug in displaying the ``event_listing`` on Collections. Show the date
  filter on Collections, if no start/end critierias are given in the
  Collection's query.
  [thet]

- Add a CSS class for the timezone in the events portlet and the
  ``event_summary`` view.
  [mitakas]

- In the ``event_summary`` view, change the ``event-timezone`` list-item class
  to ``event-date``.
  [thet]


2.0a7 (2015-03-13)
------------------

- In the event_view, use the ``#parent-fieldname-text`` wrapper for text
  output, because of consistency.
  [thet]


2.0a6 (2015-03-04)
------------------

- Some Plone 5 related js improvements
  [vangheem]

- Use Plone 5 imports from plone.app.z3cform and make plone.app.widgets a soft
  dependency.
  [vangheem]

- Remove support for ``plone.app.collection`` and ``ATTopic`` - plone.app.event
  2.x is Dexterity only.
  [thet]

- Fix ``construct_calendar`` in plone.app.event.base to also return events for
  the first day in the calendar month.
  [thet]

- Remove ``data_postprocessing`` logic, which was handling ``open_end`` and
  ``whole_day`` events and was manipulating the object on form submission.
  Instead, just adapt start/end dates on indexing and when accessing them via
  ``IEventAccessor``.
  [thet]

- Remove the ``plone.app.event.EventTypes`` vocabulary, which relied on
  temporarily creating types. It's used for importing ical files. It should be
  possible to figure out, which types might suitable for creating events from
  ical VEVENT entries.
  [thet]

- No need to return DateTime objects for the indexer.
  Products.DateRecurringIndex works with Python datetime objects.
  [thet]

- Whole day setting doesn't hide effective range anymore. Fixes issue #167.
  [thet]


2.0a5 (2014-10-23)
------------------

- Fix German translation for Monat.
  [thet]

- Integration of the new markup update and CSS for both Plone and Barceloneta
  theme. This is the work done in the GSOC Barceloneta theme project.
  [albertcasado, sneridagh]

- Update markup for portlets and change dt dl for ul li tags.
  [albertcasado]

- Added locales for Catalan and Spanish
  [sneridagh]


2.0a4 (2014-07-22)
------------------

- Restore Plone 4.3 compatibility.
  [datakurre]

- Fix event.js Javascript, which produced Javascript date parsing errors when
  changing the start date in Firefox. Firefox does not parse date string, which
  are only nearly ISO 8601 compatible, without a "T" between the date and time
  part. Chrome on the other hand interprets timezone naive date/time strings as
  UTC and returns it localized to the user's timezone, which leads to shifting
  date/time values. For more info see this Bug report:
  https://code.google.com/p/chromium/issues/detail?id=145198
  [thet]

- Do not set the simple_publication_workflow in the p.a.event test fixture.
  [timo]

- Add ``location`` indexer. ``location`` is a default metadata field in
  portal_catalog so we should provide that information by default.
  [saily]


2.0a3 (2014-05-06)
------------------

- Fix a rare issue with event_summary, where a object's UID cannot be found in
  the catalog.
  [thet]

- Update plone.formwidget.recurrence version dependency for plone.app.widgets
  support.
  [thet]


2.0a2 (2014-04-19)
------------------

- Re-add some BBB Assignment class attributes for calendar and event portlets
  to not break Plone upgrades.
  [thet]


2.0a1 (2014-04-17)
------------------

- Make use of new z3c.form DataExtractedEvent and register the
  data_postprocessing_handler for this event. This adjusts the start and end
  date according to whole_day and open_end.

- Use default_timezone DatetimeWidget property. All datetime objects from
  plone.app.widgets' DatetimeWidget now have this timezone, if not otherwise
  set by the user.

- Move controlpanel to Products.CMFPlone.controlpanel.

- Move vocabularies to plone.app.vocabularies and use plone.* instead of
  plone.app.event.* prefix for registry keys.

- Use default and defaultFactory properties for behavior schema definitions to
  provide sane defaults for z3c.form *and* programmatically created Dexterity
  types (e.g. via plone.dextterity.utils.createContentInContainer). For that to
  work, remove the Behavior factory classes, use the default AttributeStorage
  and let IEventBasic and IEventRecurrence behaviors derive from IDXEvent resp.
  IDXEventRecurrence.

- Remove data_postprocessing event subscriber.

- Remove Timezone field from IEventBasic behavior. Instead, store timezone
  information directly in the tzinfo object on start and end datetime objects.

- Remove Archetypes subpackage.

[thet, yenzenz, garbas]


1.2.3 (2014-04-17)
------------------

- Remove DL's from portlet templates, replacing it with semantically correct
  tags. Ref: https://github.com/plone/Products.CMFPlone/issues/163
  [khink]


1.2.2 (2014-04-15)
------------------

.. note::

    Methods used for the ``event_summary`` view have has been moved from the
    ``event_view`` to ``plone.app.event.browser.event_summary``. The
    ``occurrence_parent_url`` method has been removed.

- Simplify buildout infrastructure: Move base-test.cfg to test.cfg, move
  base.cfg to buildout.cfg, remove test-43.cfg, sources-dev.cfg and
  jenkins.cfg.
  [thet]

- Disable the edit bar on Occurrence objects. They are transient and cannot be
  edited. Remove the visual distinction between IEvent and IOccurrences in the
  event_summary view. The user is likely not interested, if a Occurrence or the
  original Event is shown.
  [thet]

- Add a portal_type attribute to Occurrence objects and set it to 'Occurrence',
  so they can be easily identified without looking up interfaces.
  [thet]

- Add an event_listing view for IEvent objects to show all of it's occurrences.
  [thet]

- Change the occurrence listing in the @@event_summary view to directly link
  to the occurrence objects, rename the label to 'All dates' and also include
  the first date of the original event. The event_summary's max_occurrences
  attribute now also includes the starting event.
  [thet]


1.2.1 (2014-04-05)
------------------

- Changes in the Dexterity IRichText behavior migration: don't fail, if no
  Event type is found in the Dexterity FTI and remove the old IEventSummary
  behavior, if found.
  [thet]

- Don't use spamProtect script to render email address; it doesn't do much.
  [davisagli]

- Add an @@event_summary view, which provides the event summary listing in the
  event view for the purpose of reuse elsewhere. Allow the exclusion of
  information via an excludes list. The relevant methods are moved from
  event_view to event_summary.
  [thet]

- Improve markup of ``event_listing.pt`` in order to not break on IE 8.
  [rafaelbco]

- Use z3c.form for portlet forms.
  [bosim, davisagli]


1.2 (2014-03-01)
----------------

- Don't use spamProtect script to render email address; it doesn't do much.
  [davisagli]

- Drop usage of plone.formwidget.datetime and use plone.app.widgets instead.
  [garbas, davisagli]

- Fix label of 'Dates' fieldset.
  [esteele]


1.1b1 (2014-02-17)
------------------

.. note::

    The ``ploneintegration`` setuptools extra and GenericSetup profile have
    been removed for this version. This makes an integration into Plone and
    ``plone.app.contenttypes`` easier. Please remove them also in your setup
    and be sure to depend on ``plone.app.portlets>=2.5a1``!

.. note::

    In the event_view template, the event summary has changed from a table to a
    definition list layout. The event_view's next_occurrences method does not
    return a dictionary anymore, but only a list of next events. Also, the
    index_html template for Occurrences is renamed to event_view.  If you have
    custom view templates for IEvent or IOccurrence objects, you have to update
    them.

.. note::

    The plone.app.event.dx.event type has been moved to the
    plone.app.event:testing profile and the plone.app.event.dx:default profile
    has been removed. Use plone.app.contenttypes for a Dexterity based Event
    type, which utilizes plone.app.event's Dexterity behaviors.


- Remove Plone 4.2 compatibility. For more information see installation.rst in
  the docs.
  [thet]

- Move the plone.app.event.dx.event example type to the plone.app.event:testing
  profile and remove the plone.app.event.dx:default profile. Use the Event type
  from plone.app.contenttypes instead. Fixes #99.
  [thet]

- Remove the IEventSummary behavior and use the generic IRichText from
  plone.app.contenttypes instead. Fixes #140, Closes #142.
  [pysailor]

- Change the event detail listing in the event_view to be a definition list
  instead of a table, making it semantically more correct and the code less
  verbose. Fixes #141.
  [thet]

- For recurring events, don't show the last recurrence in the event view but
  the number of occurrences, queried from the catalog. Together with the
  previous generator-change this looping over the whole occurrnce list.
  [thet]

- Change the IRecurrenceSupport adapter's occurrence method to return again a
  generator, fixing a possible performance issue. Fixes #60.
  [thet]

- Replace RecurrenceField with plain Text field in the dx recurrence behavior.
  This reverts the change from 1.0rc2. We don't use form schema hints but an
  adapter to configure the widget. Closes #137, Fixes #131.
  [pysailor]

- Use attribute storage instead of annotation storage in all Dexterity
  behaviors. Closes #136, #95, Refs #20.
  [pysailor]

- Rename the Occurrence's 'index_html' view to 'event_view' for better
  consistency. This also fixes an issue with Solgema.fullcalendar.
  Closes #123.
  [tdesvenain]

- Fix get_events recurring events sorting, where it was only sorted by the
  brain's start date, which could easily be outside the queried range.
  [gyst]

- Avoid failing to create an event when zope.globalrequest.getRequest returns
  None on the post create event handler. This happens when creating an event
  during test layer setup time.
  [rafaelbco]

- iCalendar import: Also import objects, when the "last-modified" property was
  not changed. This conforms to the RFC5545:
  http://tools.ietf.org/search/rfc5545#section-3.8.7.3
  [jone]


1.1.a1 (2013-11-14)
-------------------

- Don't fail, if first_weekday isn't set in registry.
  [thet]

- plone.app.widgets compatibility
  [garbas]

- Set the first_weekday setting based on the site's locale when the default
  profile is activated.
  [davisagli]

- Allow query parameters for timezone vocabularies for filtering. Create the
  "Timezones" vocabulary from SimpleTerm objects with a value and title set
  for better support with plone.app.widgets AjaxSelectWidget.
  [thet]

- Remove "ploneintegration" from setuptools extra section and GenericSetup
  profile. PLEASE UPDATE YOUR INSTALLATIONS, to use Archetypes or Dexterity
  instead and to use plone.app.portlets 2.5a1! This change makes it easier for
  Plone to integrate plone.app.event.
  [thet]


1.0.5 (2014-02-11)
------------------

- For ical exports, remove X-WR-CALNAME, X-WR-CALID and X-WR-CALDESC.
  X-WR-CALNAME caused Outlook to create a new calendar on every import. These
  properties are not necessary and not specified by RFC5545 anyways.
  Fixes #109, closes #132.
  [tomgross, thet]

- Add Traditional Chinese Translation. Closes #129.
  [l34marr]

- Changed `dates_for_display` and `get_location` to accept IEvent, IOccurrence
  and IEventAccessor objects and avoid confusion on using these methods.
  [thet]

- Added basque translation.
  [erral]

- Completed italian translation.
  [giacomos]


1.0.4 (2013-11-23)
------------------

- Register event.js Javascript as "cookable" to allow merging with other files
  and provide the "plone" global if it wasn't already defined.
  [thet]


1.0.3 (2013-11-19)
------------------

- Remove unnecessary data parameter on urllib2.urlopen, which caused a 404
  error on some icalendar imports from external resources (E.g. Google).
  [thet]

- Avoid "FileStorageError: description too long" on large icalendar imports by
  doing a transaction commit instead of a savepoint.
  [thet]

- Protect ical imports with the newly created plone.app.event.ImportIcal
  permission.
  [thet]

- plone.app.widgets compatibility.
  [garbas]

- Fix UnicodeDecodeError with special characters in body text. Fixes #108
  [zwork][agitator]


1.0.2 (2013-11-07)
------------------

- Fix the path for catalog search in ical importer. This fixes an issue, where
  no existing events could be found when importing a ical file again in virtual
  hosting environments. Also, search for any existing events, not only what the
  user is allowed to see.
  [thet]

- Fix Plone 4.2 buildout and test environment.
  [thet]


1.0.1 (2013-11-07)
------------------

- Fix ical import form import error. Translation string wasn't properly
  formatted. Also be forgiving about missing LAST-MODIFIED properties from ical
  files.
  [thet]


1.0 (2013-11-06)
----------------

- Implement synchronisation strategies for icalendar import.
  [thet]

- Implement icalendar import/export synchronisation and add sync_uid index and
  sync_uid fields for ATEvent and IEventBasic. This follows RFC5545, chapter
  "3.8.4.7. Unique Identifier". The sync_uid index can also be used for any
  other synchronisation tasks, where an external universally unique identifier
  is used.
  [cillianderoiste, thet]

- Don't show the repeat forever button in the recurrence widget.
  [thet]

- Fix icalendar export for collections and Archetype topics. Fixes #104.
  [thet]

- Don't include occurrences in icalendar exports of event_listing, but include
  the original event with it's recurrence rule. Fixes #103.
  [thet]

- Don't include the recurrence definition when doing icalendar exports of
  individual occurrences. Fixes: #61.
  [thet]

- Restore Javascript based edit-form functionality to set end dates depending
  on start dates with the same delta of days as initialized, as developed by
  vincentfretin back at plone.app.event's birth.
  [thet]

- Deprecate the plone.app.event.dx.event type and plone.app.event.dx:default
  profile.  Please create your own type based on plone.app.event's Dexterity
  behaviors or use the "Event" type from plone.app.contenttypes. The
  plone.app.event:default profile is sufficient also for Dexterity-only based
  installations.
  [thet]

- Remove the behaviors plone.app.relationfield.behavior.IRelatedItems and
  plone.app.versioningbehavior.behaviors.IVersionable from the Dexterity
  example type. We don't depend on these packages and won't introduce an
  explicit dependency on it.
  [thet]

- In portlet calendar and events, don't use the search_base directly to
  construct calendar urls. The search base always starts from the Plone site
  root, which led to wrong urls in Lineage subsites.
  [thet]

- Don't validate end dates for open ended events, so open ended events in the
  future can be saved via the form. Fixes #97
  [gyst]

- Ical importer: Fix default value for imported attendees and categories.
  Return an empty tuple instead of None so that the edit form can be rendered.
  [cillianderoiste]

- Fix event_listing view on Collections to expand events. Fixes #91, Fixes #90.
  [thet]

- Don't show the event_listing_settings view in the object actions for
  event_listings on Collections or Topics, as it doesn't make sense there.
  [thet]

- Fix case, where the events, which started before a queried timerange and
  lasts into the timerange were not included in the list of event occurrences.
  [thet]

- Fix wrong result set with "limit" applied in get_events. Limiting for
  occurrence-expanded events can just happen after all occurrences are picked
  up in the result set, otherwise sorting can mess it up.
  [petschki]

- Indexer adapter for SearchableText: fixed encoding inconsistencies.  Always
  return utf-8 encoded string while using unicode internally.
  [seanupton]

- In test-setup, explicitly install DateRecurringIndex instead of extending
  it's test layer fixture. This should finally fix #81, where other tests
  couldn't be run when not extending the DRI or PAE test fixture layers.
  [thet]

- Support the @@images view for IOccurrence objects by using a factory, which
  returns a AT or DX specific view depending on the Occurrence's parent.
  [thet]

- Switch off linkintegrity checks during upgrade from atct to pae.at.
  [jensens]

- Remove event and calendar portlet assignments on plone.rightcolumn.
  Integrators should do assignments themselves, as they are likely different
  from the standard assignment.
  [thet]

- Don't fail, if timezone isn't set.
  [gforcada]


1.0rc3 (2013-08-23)
-------------------

- Fix get_events with ret_mode=3, expand=True, without recurrence
  It was returning full object instead of IEventAccessor instances.
  This also fix event portlet with norecurrent events.
  [toutpt]


1.0rc2 (2013-07-21)
-------------------

- Introduce a BrowserLayer and register all views for it. Avoids view
  registration conflicts with other packages.
  [thet]

- For the recurrence behavior In z3c.form based Dexterity forms, use the
  RecurrenceField instead of a plain Text field. This ensures that the
  recurrence widget is used even for plain z3c.form forms without form schema
  hints. This change is forward-compatible and should not break any existing
  installations.
  [thet]

- In z3c.form based Dexterity forms, use plone.autoform form hints for widget
  parameters and remove the ParameterizedWidgetFactory. plone.autoform 1.4
  supports widget parameter form hints.
  [thet]

- Update french translations.
  [toutpt]

- Fix icalendar importer to support multiple-line EXDATE/RDATE definitions.
  [thet]

- Fix runtime error in icalendar importer.
  [gbastien]

- For the setup's tests extra, depend on plone.app.testing <= 4.2.2 until the
  Dexterity and Archetypes tests are split up and the tests don't have a hard
  dependency on Archetypes.
  [thet]

- Remove dependency on "persistent" to not use that one over the ZODB bundled
  package. "persistent" will become available as separate package with ZODB 4.
  [thet]

- Declare minimum dependency on plone.event 1.0rc1.
  [thet]

- Buildout infrastructure update.
  [thet]

- Remove deprecations.
  [thet]


1.0rc1 (2013-07-03)
-------------------

Please note, the next release will have all deprections removed.

- For events lasting longer than the day they start, include them in the
  construct_calendar data structure on each day they occur. Fixes #76.
  [thet]

- Fix ATEvent's StartEndDateValidator subscription adapter to correctly return
  error dicts.
  [thet]

- In the ATEvent migration step, call ObjectModifiedEvent for each migrated
  event to call off the data_postprocessing method, which assures correct time
  values in respect to timezones. Please note, the timezone must be set
  correctly before!
  [thet]

- Rename the formated_date and formated_start_date content providers to
  have the correct spelling of "formatted". Doing this change now while this
  package's adoption is not too wide spread.
  [thet]

- Use same i18n field and error message strings for ATEvent and DX behaviors.
  [thet]

- Let plone.app.event.base.get_events always do a query with a sort definition,
  even if we are in expand mode and do a sort afterwards again. We need this to
  get stable results when having a sort_limit applied. Fixes an issue where the
  events_portlet did show the next events with an offset of some days.
  [thet]

- For the event and calendar portlets, use UberSelectionWidget to select the
  search base path to make this field actually usable.
  [thet]

- Remove ICalendarLinkbase adapter, which provided URLs to a calendar view.
  Instead, for event and calendar portlet links, the searchbase setting path
  is used to link to it or as fallback to call event_listing on ISite root.
  [thet]

- As like in event_view, use the get_location function for supporting location
  references in event_listing and portlet_events. Implement get_location just
  as a simple wrapper - handling of references must be provided by external
  packages, like collective.venue.
  [thet]

- Fixed unicode issue in event_view with non-ascii location strings and
  of referenced locations via collective.venue.
  [thet]

- In event_listing views in "past" or "all" modes, do a reverse sort on the
  results, starting with newest events.
  [thet]

- Create an Python based import step to properly set up the portal catalog.
  This avoids clearing the index after importing a catalog.xml. This import
  steps obsoletes the ploneintegration catalog.xml import step also.
  [thet]

- Add a event listing settings form, which allows configuration of the event
  listing view via annotations on the context.
  [thet]

- For the event listing view, accept SearchableText and tags request parameters
  for filtering the result set.
  [thet]

- For default_start and default_end, return a datetime with minute, second and
  microsecond set to 0.
  [thet]

- Don't overload ATEvent's subject widget label and help texts but use AT and
  DX standard label_tags and help_tags messages.
  [thet]

- Fix compact event edit form layouts and don't float the recurrence widget.
  [thet]

- Change default listing mode in event_listing and replace "All" with separate
  "Future" and "Past" buttons.
  [thet]


1.0b8 (2013-05-27)
------------------

- Fix OccurrenceTraverser to fallback to plone.app.imaging's ImageTraverser, if
  present and thus support image fields on plone.app.event based types.
  [thet]

- Change the AT validation code to an subsciption adapter. This allows reliable
  validation for types derived from ATEvent, which wasn't the case with the
  post_validate method.
  [thet]

- More compact layout for AT and DX edit forms.
  [thet]

- Add open_end option for Dexterity behaviors and Archetypes type.
  [thet]

- For whole_day events, let dates_for_display return the iso-date
  representation from date and not datetime instances.
  [thet]

- Remove support of microseconds and default to a resolution of one second for
  all datetime getter/setter and conversions. Microseconds exactness is not
  needed and dateutil does not support microseconds which results in unexpected
  results in comparisons.
  [thet]

- Changing the timezone in events is a corner case, so the timezone field is
  moved to the "dates" schemata for AT and DX.
  [thet]

- Remove font-weight bold for monthdays and font-weight normal for table header
  in portlet calendar. Set div.portletCalendar with to auto instead of
  unnecessary 100% + margin. Align with plonetheme.sunburst.
  [thet]

- Let the IRecurrenceSupport adapter return the event itself, when the event
  starts before and ends after a given range_start. Fixes a case, where
  get_events didn't return a long lasting event for a given timeframe with
  expand set to True.
  [thet]

- Let the @@event_listing view work on IATTopic and ICollection contexts.
  [thet]

- In event_view, handle the case that the location field is not of type
  basestring but a reference to another object, for example provided by
  collective.venue.
  [thet]

- Use plone.app.event's MessageFactory for ATEvent.
  [thet]

- Let EventAccessor for Archetypes based content type return it's values from
  property accessors instead properties directly. This let's return the correct
  value when an property gets overridden by archetypes.schemaextender.
  [thet]

- Deprecate upgrade_step_2 to plone.app.event beta 2, which is likely not
  necessary for any existing plone.app.event installation out there.
  [thet]

- For the Archetypes based ATEvent migration step, do a transaction.commit()
  before each migration to commit previous changes. This avoids running out of
  space for large migrations.
  [thet]

- Let IEventAccessor adapters set/get all basestring values in unicode.
  [thet]

- Add and install plone.app.collection in test environment, as we cannot assume
  that it's installed.
  [thet]

- Re-Add cmf_edit method for ATEvent to ensure better backwards compatibility.
  Move related cmf_edit tests from Products.CMFPlone to plone.app.event.
  [thet]

- Add Event profile definition for ATEvent completely in order to remove it from
  Products.CMFPlone. ATEvent is installed by ATContentTypes automatically as
  part of upcoming plone.app.contenttypes merge.
  [thet]

- Optimize css by using common classes for event_listing and event_view.
  [thet]

- Add schema.org and hCalendar microdata to event_view and event_listing views.
  Fixes #2, fixes #57.
  [thet]


1.0b7 (2013-04-24)
------------------

- Don't show plone.app.event:default and
  plone.app.event.ploneintegration:prepare profiles when creating a Plone site
  with @@plone-addsite.
  [thet]

- Remove render_cachekey from portlet_events, since it depends on an
  undocumented internal _data structure, which must contain catalog brains.
  [thet]

- In tests, use AbstractSampleDataEvents as base class for tests, which depend
  on AT or DX event content.
  [thet]

- Introduce create and edit functions in IEventAccessor objects.
  [thet]

- API Refactorings. In base.py:
    * get_portal_events and get_occurrences_from_brains combined to get_events.
    * get_occurrences_by_date refactored to construct_calendar.
    * Renamings:
        - default_start_dt -> default_start,
        - default_end_dt -> default_end,
        - cal_to_strftime_wkday -> wkday_to_mon1,
        - strftime_to_cal_wkday -> wkday_to_mon0.

    * Remove:
        - default_start_DT (use DT(default_start()) instead),
        - default_end_DT (use DT(default_end()) instead),
        - first_weekday_sun0 (use wkday_to_mon1(first_weekday()) instead),
        - default_tzinfo (use default_timezone(as_tzinfo=True) instead).

  In ical:
    * Renamed construct_calendar to construct_icalendar to avoid same name as
      in base.py.

  BBB code will be removed with 1.0.
  [thet]

- Update translations and translate event_view and event_listing.
  [thet]

- Configure event_listing to be an available view on Collections, Folders,
  Plone Sites and Topics.
  [thet]

- Depend on plone.app.dextterity in ZCML, so that all DublinCore metadata
  behaviors are set up correctly.
  [thet]

- Backport from seanupton: IObjectModifiedEvent subscriber returns early on
  newly created event (Commit c60c8b521c6b1ca219bfeaddb08e26605707e17 on
  https://github.com/seanupton/plone.app.event).
  [seanupton]

- Calendar portlet tooltips css optimizations: max-with and z-index.
  [thet]

- Add Brazilian Portuguese translation
  [ericof]

- Add ical import feature, register action to enable it and add a object tab to
  the @@ical_import_settings form. .ics files can be uploaded or fetched from
  the net from other calendar servers.
  [thet]

- Since more ical related code is upcoming (importer), add ical subpackage and
  move ical related code in here.
  [thet]

- When exporting whole_day/all day events to icalendar, let them end a day
  after at midnight instead on the defined day one second before midnight. This
  behavior is the preferred method of exporting all day events to icalendar.
  [thet]

- Additionally to the 'date' parameter, allow passing of year, month and day
  query string parameters to the event_listing view and automatically set the
  mode to 'day' if a date was passed.
  [thet]

- Backport from plone.app.portlets: Don't fail on invalid (ambiguous) date
  information in request (Commit a322676 on plone.app.portlets).
  [tomgross]

- Backport from plone.app.portlets: Use str view names for getMultiAdapter
  calls (commit c296408 on plone.app.portlets).
  [wichert]


1.0b6 (2013-02-14)
------------------

- Styles for event_listing date navigation.
  [thet]

- Add datepicker for day selection in event_listing view.
  [thet]

- Fix event_listing to search only for events in the current context's path.
  Allow "all" request parameter for no path restriction in searches.
  [thet]

- Backport change from seanupton: get_portal_events() fix: navroot path index
  incorrectly passed as tuple, now fixed to path string.
  [seanupton, thet]

- Fix get_portal_events to respect path for query if given in keywords.
  [thet]


1.0b5 (2013-02-11)
------------------

- Restore Python 2.6 compatibility by avoiding total_seconds method from
  timedelta instances in icalendar export.
  [thet]


1.0b4 (2013-02-08)
------------------

- Remove occurrences.html view because it's replaced by event_listing view.
  [thet]

- Changed Dexterity event-type title from "Event (DX)" to "Event" for
  consistent naming between Archetypes and Dexterity content types.
  [thet]

- Updated and synced translations (.pot and German translations).
  [thet]

- Use content-core fill/define metal definitions in all templates which use
  main_template's master macro.
  [thet]

- Calendar Portlet: Better portlet and tooltip styling. Drop usage of
  todayevent and todaynoevent classes. Fix Linking to calendar_listing.
  [thet]

- Event listing: Optimized layout and styles, mode switch, calendar-navigation,
  timespan header.
  [thet]

- Implement week and month mode for start_end_from_mode function.
  [thet]

- Add icalendar timezone support and properly export whole day events.
  Fixes #22, Fixes #71.
  [thet]

- Don't set icon_expr for the Dexterity content type and use css instead.
  [thet]

- Restore compatibility to Plone 4.3 by including the ploneintegration module
  also for Plone 4.3 but not 4.4.
  [thet]

- Version fix for z3c.unconfigure==1.0.1. This fix can be removed, once Plone
  depends on zope.configuration>=3.8.
  [thet]

- Add icon_export_ical.png from Products.ATContentTypes to plone.app.event.
  [thet]

- Configure first_day parameter for DateTime and Recurrence Widget (AT and DX).
  [thet]

- Configure the default_view of plone.app.event's ATEvent to be @@event_view.
  This prevents of referencing the old event_view from the plone_content skin
  layer to be used in some cases.
  [thet]

- Style the calendar portlet tooltips only for the calendar portlet.
  [thet]


1.0b3 (2012-12-18)
------------------

- Set the CalendarLinkbase urlpath to respect the search_base in calendar and
  event portlets.
  [thet]

- Depend on plone.app.portlets >= 2.4.0, since portlet_calendar needs the
  render_portlet view for it's ajaxification. This may break Plone 4.2
  integrations, until you make a buildout version fix.
  [thet]

- Remove dependency on Grok for the Dexterity behaviors.
  [thet]

- Just use classes instead of id's for the calendar portlet's page switcher.
  [thet]

- Reimplement the calendar page switcher from the calendar portlet with jQuery
  and remove the implicit dependency on KSS.
  [thet]

- Use event_listing instead of the search view in CalendarLinkbase for calendar
  and event portlets.
  [thet]

- Add new API functions:
  [thet]

  - date_speller to format a date in a readable manner,

  - start_end_from_mode to return start and end date according to a mode string
    (today, past, future, etc.),

  - dt_start_of_day and dt_end_of_day to set a date to the start of the day
    (00:00:00) and to the end of the day (23:59:59) for use in searches.

- Add new event_listing view to show previous, upcoming, todays and other
  events in a listing.
  [thet]

- Fix EventAccessor for ATEvent to correctly return the description.
  [thet]

- In portlet_calendar, grey-out previous and next month dates by making them
  transparent.
  [thet]


1.0b2 (2012-10-29)
------------------

- Fix ical export of RDATE and EXDATE recurrence definitions. Fixes #63.
  [thet]

- Align ATEvent more to Archetypes standards and avoid AnnotationStorage and
  ATFieldProperty. We needed to remove the ATFieldProperty for the timezone
  field for a custom setter. By doing so, the other two ATFieldProperties were
  changed too. This way, the ATEvent API gets more consistent. For a convenient
  access to ATEvent as well as dextterity based event types, use the
  IEventAccessor from plone.event.interfaces. Upgrade step from pre 1.0b2 based
  ATEvent types is provided.
  [thet]

- Treat start/end datetime input always as localized values. Changing the
  timezone now doesn't convert the start/end values to the new zone (AT, DX).
  [thet]

- Fix moving start/end dates when saving an unchanged DX event (issue #62).
  [thet]

- Portlet assignment fix. Now both - calendar and event portlet - are
  installed.
  [thet]


1.0b1 (2012-10-12)
------------------

- Add the calendar portlet by default when installing plone.app.event.
  [thet]

- Backport changes from "merge plip-10888-kss branch" in plone.app.portlets.
  KSS attributes still left in place for backwards compatibility.
  [thet]

- Buildout infrastructure update.
  [thet]

- Icalendar export of attendees almost according to the RFC5545 standard. At
  the moment, we do not distinguish between CN and CAL-ADDRESS in Plone, so we
  just put the attendee value to the CN and CAL-ADDRESS parameter. Fixes #24.
  [thet]

- Support microseconds for DateTime conversions. For recurrence rules,
  timezones are not supported due to a python-datetime limitation.
  [thet]

- Don't allow ambiguous timezones like 'CET', which also have implementation
  errors in DateTime. Force them to another zone. Timezones should be set
  explicitly anyways.
  [thet]

- Let EventOccurrenceAccessor return its own URL instead of its parent.
  Once again fixes #58.
  [thet]

- Fix calendar portlet header, which day names were shifted by one day since a
  incompatibility between the calendar module (0 is Monday) and the strftime
  function (0 is Sunday).
  [thet]

- Create an formated_date content provider, which takes an occurrence or event
  object when called and formats the start/end date and times for display. This
  content provider can be overridden for other contexts. E.g. the events
  portlet uses just shows the start date and not the end date.
  [thet]

- Let IRecurrenceSupport adapter's occurrences method return as first
  occurrence the event object itself instead of an Occurrence object.
  Fixes #58.
  [thet]

- Include plone.event's new configure.zcml.
  [thet]

- For the ATEvent type, use a more specific IATEvent interface with IEvent and
  P.ATCT's IATEvent as bases. So we can provide adapters, overriding more
  general IEvent adapting adapters.
  [thet]

- Don't show start occurrence in "More occurrences" section in event_view.
  [thet]

- Create adapter ICalendarLinkbase which returns links to calendar views and
  can be overridden through a more specific implementation by addon products.
  For example, the portlet_calendar and portlet_events links to the @@search
  view can be changed to URLs to a real calendar view, if one is installed.
  [thet]

- For portlet_calendar and portlet_events configuration, make the workflow
  state selection optional. If nothing is selected, all states are searched.
  [thet]

- Add search_base (select path to search for events) and state (select review
  state for events to search) to portlet_calendar settings and search_base to
  portlet_events.
  [thet]

- Limit the amount of occurrences in the event view if the event yields
  more than 7 occurrences. Show only 6 occurrences and the last
  occurrence.
  [romanofski]

- More minor fixes.
  [thet]

  * Don't force DateTime conversion in query parameters of get_portal_events.
    The catalog index uses Python's datetime anyways.

  * Only set end date in _prepare_range to next day, if it's a date and not
    datetime.

  * Register the Archetypes postprocessing event subscribers also for
    IObjectCreatedEvent.

- Fix #51, logical error with range_end parameter in get_portal_events.
  [thet]

- Fix test startup by not depending on getSite().translate, which is a
  filesystem script.
  [thet]

- Backport changes from davilima: Add safety check for False all_events_links.
  [davilima6]

- Make get_occurrences_by_date work for events which do not have
  IRecurrenceSupport (e.g. Dexterity events without the recurrence behavior).
  [thet]

- Don't run event handlers for ATEvent, if it doesn't provide IEvent.
  [thet]

- Fix utf-8 encoding problem with icalendar export.
  [rnix]

- Unregister ics_view for ATFolder and ATBTreeFolder as well in
  ploneintegration.
  [rnix]

- Workaround for buggy strftime with timezone handling in DateTime.
  See: https://github.com/plone/plone.app.event/pull/47
  [seanupton]

- Rebind portlet_calendar tooltips after ajax calendar reloads.
  [thet]

- Allow the refreshCalendar kss view also on Occurrence objects.
  [thet]

- Let portlet_events link to @@search for future and previous events for sites
  without the standard events folder.
  [thet]

- Moved docs/HISTORY.rst to CHANGES.txt.
  [seanupton]

- Calendar portlet search links now use @@search (from plone.app.search)
  instead of (since Plone 4.2) deprecated ./search (search.pt).  Requires
  recent plone.app.search changes.
  [seanupton]

- Integrate the plone.app.event-ploneintegration functionality for Plone
  versions without plone.app.event core integration (all current version)
  into this package for simplification.
  [thet]

- IEventSummary behavior added for body text on Dexterity event type,
  as well as a SearchableText indexer adapter for the Dexterity event
  type.
  [seanupton]

- Filter calendar portlet search URLs for each day to a whitelist of
  event portal_type values.  Prevents non-event add-on types with
  start/end fields from showing up in calendar, as defense against
  unintended consequences (add-ons could explicitly override this
  template if they define additional Event types).
  [seanupton]

- API refactoring:
  * Move all generic interfaces to plone.event,
  * Extend IEventAccessor adapters to also be able to set attributes.
  [thet]

- Copy plonetheme.sunburst styles for the calendar portlet to event.css. This
  way, the calendar portlet is nicely styled, even without sunburst theme
  applied.
  [thet]

- For Dexterity behaviors, use IEventRecurrence adapter to store attributes
  directly on the context.  This fixes that recurrence occurrences start and
  end dates were not indexed, because the DateRecurringIndex had not access to
  the recurrence attribute.
  [thet]

- IRecurrence adapter returns now acquisition-wrapped occurrence
  objects.
  [romanofski]

- Event portlet is now showing occurrences, sorted by start date.
  [romanofski]

- Moved whole_day field in directly after the end date to get a more logical
  group.
  [thet]

- Added dedicated timezone validator with fallback zone.

- Added traverser for occurrences. The event view is used to show
  individual occurrences.
  [romanofski]

- Broken paging in the calendar portlet has been fixed (#11).
  [romanofski]

- Make the start DateTime timezone aware and fix an issue where the start date
  was after the end date. Fixes: #8.
  [romanofski]


1.0a2 (2012-03-28)
------------------

- Add portlet GenericSetup registration for calendar and event portlet.
  [thet]

- API CHANGE: Use zope.annotation for behaviors, remove unnecessary factories,
  create IRecurrence adapter for access to occurrences.
  [thet]


1.0a1 (2012-03-12)
------------------

- Initial alpha release.
  [thet]

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/plone.app.event",
    "name": "plone.app.event",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "plone event",
    "author": "Plone Foundation",
    "author_email": "plone-developers@lists.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/f6/37/5bd1c087af2540b610f894ff2554c58606370c90156e9083cc05920eb5e5/plone.app.event-5.1.2.tar.gz",
    "platform": null,
    "description": "plone.app.event\n===============\n\n``plone.app.event`` is the calendaring framework for Plone. \n\nIt provides \n\n- Dexterity behaviors, \n- timezone support, \n- RFC5545 icalendar export, \n- recurrence support, \n- event views \n- and a lot more.\n\nIt is part of the `CMS Plone <https://plone.org>`_ and does not need additional installation steps.\n\nSource Code\n===========\n\nContributors please read the document `Contributing to Plone <https://6.docs.plone.org/contributing/index.html>`_\n\nSources are at the `Plone code repository hosted at Github <https://github.com/plone/plone.dapp.event>`_.\n\n\nInstallation\n============\n\n\n``plone.app.event`` only provides Dexterity behaviors to build own types based on them.  If you want to install a Dexterity based Event type, you can simply use ``plone.app.contenttypes`` 1.2a3 or up.\n\nDepend on one (or both) of these setuptools dependencies::\n\n    'plone.app.event'\n\n\nThe zcml dependency is be loaded automatically by z3c.autoinclude.\n\nThen install plone.app.event via the controlpanel or by depending on the following GenericSetup profile in metadata.xml::\n\n    plone.app.event:default\n\n\nUpgrading from plone.app.event 1.x\n----------------------------------\n\nTODO: ...\n\nThere are upgrade steps in plone.app.contenttypes for 1.x to 2.0. That has to be revisited and refactored.\n\n\nUpgrading from plone.app.event 1.0\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nTODO: ...\n\nThe \"ploneintegration\" setuptools extra, subpackage and GenericSetup profile have been gone. You just need to remove these dependencies from your setup and use the \"plone.app.event.at:default\" profile instead, if you plan to use the Archetypes based ATEvent type.\n\nUse the provided upgrade steps to upgrade Dexterity behaviors: Attribute storage (Migrate fields from annotation storage to attribute storage) and New IRichText behavior (Enable the new IRichText instead of the IEventSummary behavior).\n\n\nUpgrading from Products.ATContentType to plone.app.event\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. warning::\n\n  Please backup before upgrading and check the upgraded contents for validity!\n\nIf you want to upgrade Products.ATContentTypes based ATEvents to plone.app.event ones, there is an upgrade step for that: \"Upgrades old AT events to plone.app.events\" (Metadata version 1 to 2). In order to use it, go to Plone Control Center -> ZMI -> portal_setup -> Upgrades. Select \"plone.app.event.at:default\" profile and click \"Show old upgrades\". Select the upgrade step and run it.\n\nYou might also need to \"clear and rebuild\" the catalog after upgrading. You can do so at Plone Control Center -> ZMI -> portal_catalog -> Advanced (this may take a while)\n\n\nUpgrading to Dexterity\n~~~~~~~~~~~~~~~~~~~~~~\n\nUpgrade steps to migrate Products.ATContentTypes based ATEvents, plone.app.event based ATEvents or plone.app.event Dexterity example types (plone.app.event.dx.event) to plone.app.contenttypes Dexterity Events can be found within plone.app.contenttypes. This package utilizes plone.app.event's Dexterity behaviors for it's Event type.\n\n\nConfiguration\n-------------\n\n.. note::\n\n  Don't forget to set the portal timezone!\n\nAfter installation, please set your timezone in the plone date and time controlpanel (@@dateandtime-controlpanel). Otherwise time calculations are based on UTC and likely wrong for your timezone. Also set the first weekday setting for correct display of the first weekday in calendar views.\n\n\nChangelog\n=========\n\n.. You should *NOT* be adding new change log entries to this file.\n   You should create a file in the news directory instead.\n   For helpful instructions, please see:\n   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n\n.. towncrier release notes start\n\n5.1.2 (2024-04-16)\n------------------\n\nBug fixes:\n\n\n- Fix calculation of eventaccessor urls @1letter (#387)\n\n\n5.1.1 (2023-10-07)\n------------------\n\nInternal:\n\n\n- Require setuptools 68.2 or higher for building the package.\n  When built with setuptools 68.1, you could not import the package, at least not an editable package.\n  Note that you can still *install* this package with older setuptools versions.\n  See `Plone meta issue 172 <https://github.com/plone/meta/issues/172>`_ for details.\n  [maurits] (#172)\n\n\nTests\n\n\n- Fix test_long_event when run around midnight of the first day of the month.\n  Fixes `issue 334 <https://github.com/plone/plone.app.event/issues/334>`_.\n  [maurits] (#334)\n\n\n5.1.0 (2023-07-22)\n------------------\n\nNew features:\n\n\n- Cache the events from the 'Upcoming Events' portlet\n  [frapell] (#351)\n\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (5ed054fb)\n\n\n5.0.1 (2023-04-15)\n------------------\n\nInternal:\n\n\n- Update configuration files and dependencies.\n  [plone devs] (0b0246aa)\n\n\n5.0.0 (2023-04-06)\n------------------\n\nBreaking changes:\n\n\n- Breaking dependency cleanup: Move declaration of language independence of on IEventBasic fields to plone.app.multilingual.\n  [jensens] (367-pam)\n\n\nBug fixes:\n\n\n- Fix `expand_events` doubling the first occurrence with the original event\n  [petschki] (#348)\n- Fix date display for recurring `open_end` events and multi day `whole_day` events by correcting duration.\n  [ksuess, petschki] (#362)\n\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (e380661b)\n\n\n4.0.0 (2022-11-11)\n------------------\n\nBug fixes:\n\n\n- Fixed tests to work with icalendar 5.0.2, where ``;VALUE=DATE-TIME`` is not included because it is already the default.\n  [maurits] (#450)\n\n\n4.0.0b1 (2022-07-19)\n--------------------\n\nBug fixes:\n\n\n- Fix default i18n msgid values\n  [erral] (#359)\n\n\n4.0.0a9 (2022-05-24)\n--------------------\n\nBreaking changes:\n\n\n- Code Style, pyupgrade, remove six, use plone.base, some overhaul.\n  [jensens] (#356)\n\n\nBug fixes:\n\n\n- Remove project-specific code from selectors in the event JavaScript.\n  [thet] (355-2)\n- Do frontend date widget calculation with datetime-native dates to simplify code better universal support. (355-3)\n- Wrap JavaScript a immediately invoked function to not expose the functions in global namespace.\n  [thet] (#355)\n- Remove jQuery from event edit JS.\n  [petschki] (#358)\n- Removed z3c.autoinclude.plugin entrypoint. [maurits] (#3188)\n\n\n4.0.0a8 (2022-04-07)\n--------------------\n\nNew features:\n\n\n- Use patternlib `pat-datetime-picker` for datetime fields\n  in combination with its `after` option\n  [petschki] (#346)\n- PLIP 2780: textindexer, use here.\n  [zworkb] (#2780)\n\n\nBug fixes:\n\n\n- remove `plone-legacy` bundle and update eventedit script.\n  [petschki, thet] (#350)\n\n\n4.0.0a7 (2021-10-22)\n--------------------\n\nBug fixes:\n\n\n- Bring back date card for event listing.\n  [petschki] (#345)\n\n\n4.0.0a6 (2021-10-16)\n--------------------\n\nBug fixes:\n\n\n- Fix test for icalendar with missing VALUE for date (not date-time) of DTSTART/DTEND.\n\n  If multiple value types are allowed for a component, the value type can only be omitted if it is the default type.\n  The default type for DTSTART/DTEND is DATE-TIME.\n  See RFC5545 3.2.20, 3.8.2.2 and 3.8.2.3.\n  [thet] (#343)\n\n\n4.0.0a5 (2021-09-01)\n--------------------\n\nBug fixes:\n\n\n- make expand_events return items after start/end limit (fixes https://github.com/plone/plone.app.event/issues/261)\n  [fRiSi] (#261)\n\n\n4.0.0a4 (2021-07-26)\n--------------------\n\nBug fixes:\n\n\n- Do not allow ``file:`` protocol in ical url.\n  Previously, only ``file://`` was disallowed, but this left room for relative paths.\n  Taken over from `PloneHotfix20210518 <https://plone.org/security/hotfix/20210518/server-side-request-forgery-via-event-ical-url>`_.\n  [maurits] (#3274)\n\n\n4.0.0a3 (2021-06-14)\n--------------------\n\nBug fixes:\n\n\n- Fix #330 traversal problem in the portlet_events template when an object in a folder is called \"image\"\n  [sneridagh] (#330)\n\n\n4.0.0a2 (2021-05-11)\n--------------------\n\nNew features:\n\n\n- Restructure event summary\n  [agitator] (#328)\n\n\n4.0.0a1 (2021-04-20)\n--------------------\n\nBreaking changes:\n\n\n- Update for Plone 6 with Bootstrap markup\n  NavBar in Upcoming/Past/iCal Navigation\n  [1letter] (#326)\n\n\n3.2.10 (2020-11-17)\n-------------------\n\nBug fixes:\n\n\n- Give validation error in ical importer when a ``file://`` URL is used.\n  This could be a line of attack for a hacker.\n  [maurits] (#3209)\n\n\n3.2.9 (2020-09-21)\n------------------\n\nBug fixes:\n\n\n- Replaced deprecated ``plone.testing.z2`` imports with ``plone.testing.zope``, where possible.\n  [maurits] (#3130)\n\n\n3.2.8 (2020-09-07)\n------------------\n\nBug fixes:\n\n\n- Fixed deprecation warning for ``setDefaultRoles``.\n  [maurits] (#3130)\n\n\n3.2.7 (2020-04-20)\n------------------\n\nBug fixes:\n\n\n- Change markup for structured data schemas from ``data-vocabulary.org`` to ``schema.org``.\n  Because google supports only schema.org - based definitions\n  [1letter] (#312)\n\n\n3.2.6 (2019-11-25)\n------------------\n\nBug fixes:\n\n\n- Fix Python2 vs. Python3 text and bytes handling in the calendar portlet. (#308)\n\n\n3.2.5 (2019-10-12)\n------------------\n\nBug fixes:\n\n\n- Load zcml of ``plone.resource`` for our use of the ``plone:static`` directive.\n  [maurits] (#2952)\n\n\n3.2.4 (2019-06-27)\n------------------\n\nBug fixes:\n\n\n- Add regression-test for allowed_attributes. See https://github.com/zopefoundation/Zope/issues/397\n  [pbauer] (#306)\n\n\n3.2.3 (2019-03-21)\n------------------\n\nBug fixes:\n\n\n- fix SearchableText indexer for Python 3\n  [petschki] (#302)\n\n\n3.2.2 (2019-03-03)\n------------------\n\nNew features:\n\n\n- - Add title in view definition, to allow translations. [cekk] (#298)\n\n\nBug fixes:\n\n\n- Close files in tests (#300)\n\n\n3.2.1 (2018-10-30)\n------------------\n\nBug fixes:\n\n- Fixed searchable text indexer to avoid breaking when there is no text.\n  [davisagli]\n- iCalendar categories are expected as a comma separated string, not as multiple entries.\n  See https://www.kanzaki.com/docs/ical/categories.html\n  Needs fixed iCalendar >4.0.2\n  [jensens]\n\n\n3.2.0 (2018-09-23)\n------------------\n\nNew features:\n\n- Remove ``Pragma: no-cache`` header for icalendar exports.\n  The ``Pragma`` header is HTTP 1.0 and the caching strategy on icalendar exports should better be defined by integrators.\n  [thet]\n\nBug fixes:\n\n- Python 3 compatibility.\n  [pbauer]\n\n- Make sure to include the 'Content-Length' header for ical exports\n  [frapell]\n\n- Update plone.app.event resources. Requires plonetheme.barceloneta >= 1.9.\n  [agitator]\n\n\n3.1.1 (2018-06-04)\n------------------\n\nBreaking changes:\n\n- Introduce ``spell_date`` and deprecate ``date_speller`` in ``plone.app.event.base``.\n  spell_date does only optionally accept an context where date_speller the context was required.\n  [thet]\n\n- Use plone i18n domain.\n  [gforcada]\n\nBug fixes:\n\n- Remove obsolete event_icon.png and corresponding css rule.\n  Fixes: #283.\n  [thet]\n\n- Fix CSS syntax error in event.css\n  [robbuh]\n\n- Fix icalendar export for folderish events which are containers with a ``__getitem__`` method.\n  [thet]\n\n- Python 3 compatibility.\n  [pbauer]\n\n- Fix future_events French translation.\n  [vincentfretin]\n\n3.1 (2018-02-04)\n----------------\n\nNew features:\n\n- When setting start and end via the IEventAccessor, convert it to a Python datetime with timezone information.\n  [thet]\n\n- iCal export:\n  - More response headers.\n  - Support property parameters.\n  - Add ``geo`` for (lat, lng) geolocation coordinates. This method is not implemented and can be used by addons to provide that feature.\n  - Factor-out all event components from ``ICalendarEventComponent.to_ical`` method into separate properties, so that individual properties can be easier overloaded in subclasses.\n  - Check, if event is really an event before ical-exporting. Fixes a problem when a collection mixes event and non-event like result objects.\n  - Add ``rel=\"nofollow\"`` to ical export links for robots to not download them.\n  [thet]\n\n- add full danish translation\n  [tmog]\n\nBug fixes:\n\n- Add Python 2 / 3 compatibility.\n  [pbauer]\n- Language independence for fields: `start`, `end`, `whole_day`, `open_end`\n  [agitator]\n\n- iCalendar import: Fix usage of ``sync_uid``, which wasn't correctly implemented since plone.app.event 2.0.\n  [thet]\n\n- Raise ``AttributeError`` when attempting to index an empty location attribute value.\n  [thet]\n\n- Fix portlet get_calendar_url with unicode search_base.\n  [bsuttor]\n\n- fallback search base URL for calendar/event portlets to NavigationRoot [petschki]\n\n\n3.0.7 (2017-11-24)\n------------------\n\nBug fixes:\n\n- Fixed check for events iterable in Zope 4. [davisagli]\n\n\n3.0.6 (2017-09-05)\n------------------\n\nBug fixes:\n\n- Improve the JavaScript to wait for the PickADate pattern to be initialized.\n  Follow better JS practices.\n  [thet]\n\n- Remove broken floating layout of start, end, whole_day and open_end fields.\n  [thet]\n\n\n3.0.5 (2017-07-03)\n------------------\n\nNew features:\n\n- option to override thumb /icon behavior individually for portlet (suppress thumbs, thumb size)\n  https://plone/Products.CMFPlone#1734 [fgrcon]\n  applied https://github.com/plone/Products.CMFPlone/issues/1483\n  [fgrcon]\n\nBug fixes:\n\n- fixed css-classes for thumb scales ...\n  https://github.com/plone/Products.CMFPlone/issues/2077\n  [fgrcon]\n\n\n3.0.4 (2017-02-12)\n------------------\n\nBug fixes:\n\n- Fix views should show the next upcoming recurrence of event.\n  Fixes: https://github.com/plone/plone.app.event/issues/185\n  [allusa]\n\n\n3.0.3 (2016-11-17)\n------------------\n\nBug fixes:\n\n- Remove requirement of ``collective.elephantvocabulary`` which is no longer used.\n  [davisagli]\n\n\n3.0.2 (2016-10-05)\n------------------\n\nBreaking changes:\n\n- Really remove Plone 4 compatibility code.\n  [thet]\n\nBug fixes:\n\n- Fix format of tooltip in calendar portlet.\n  Fixes: https://github.com/plone/Products.CMFPlone/issues/1046\n  [fgrcon]\n\n- Fix bug when creating indexes on install. It was not detecting existing indexes correctly.\n  [vangheem]\n\n- Do not index `sync_uid`, `start` and `end` fields if they are empty.\n  [bsuttor]\n\n- Update french translations.\n  [bsuttor]\n\n- Fixing a typo in dutch translations.\n  [andreesg]\n\n\n\n3.0.1 (2016-09-16)\n------------------\n\nBug fixes:\n\n- Update Traditional Chinese Translations.\n  [l34marr]\n\n\n3.0 (2016-08-12)\n----------------\n\nBreaking changes:\n\n.. note::\n    This release depends on ``plone.app.z3cform >= 2.0.1``, which is only available for Plone 5.1.\n    This is a backwards incompatible change, which satisfy a major version change for plone.app.event.\n    Consequently, Plone 4 compatibility code will be removed in this release.\n\nNew features:\n\n- Use ``schema.URI`` instead of ``schema.TextLine`` for ``event_url`` field.\n  [thet]\n\n- Make JavaScript date/time update work with optional start/end dates.\n  [thet]\n\n- Make use of more generic selectors in JavaScript, so that JavaScript works also for derived classes.\n  [thet]\n\n- Configure custom css classes for all event behavior fields.\n  This makes it easier to use same selectors also for derived behaviors.\n  Needs ``plone.app.z3cform >= 2.0.1``.\n  [thet]\n\n- Use ``plone.autoform.directives`` for manipulating field widgets instead of overriding the default Fieldwidget adapters.\n  [thet]\n\nBug fixes:\n\n- Fixed possible cross site scripting (XSS) attack in location field.  [maurits]\n\n- Remove Archetypes based JavaScript code.\n  [thet]\n\n- Don't validate the ``validate_start_end`` invariant, if start or end are ``None``.\n  This can happen on non-required, default empty start or end fields during editing.\n  [thet]\n\n\n2.0.9 (2016-05-15)\n------------------\n\nNew features:\n\n- Changed the color of the navigation in the calendar widget to grey(from blue) using inherit.\n  see https://github.com/plone/Products.CMFPlone/issues/1445\n  [janga1997]\n\n\n2.0.8 (2016-04-29)\n------------------\n\nNew:\n\n- Added short-names for behaviors.\n  [jensens]\n\nFixes:\n\n- Don't break ``base.dates_for_display`` and the ``formatted_date`` content provider, if event object has no start or end dates.\n  It might come from a potential event.\n  [thet]\n\n\n2.0.7 (2016-03-31)\n------------------\n\nNew:\n\n- Translation locales of plone.app.event to Russian [serge73]\n\nFixes:\n\n- When trying to access an occurrence in the future outside the range of indexed occurrences, do not raise ``StopIteration``.\n  Instead fall back to raise ``AttributeError``.\n  [frapell]\n\n- Ensure that unittests reset the timezone information\n  [do3cc]\n\n\n2.0.6 (2016-01-08)\n------------------\n\nFixes:\n\n- Change the behaviors text getter to use ``output_relative_to`` with the\n  current context. This correctly transforms relative links. See:\n  https://github.com/plone/plone.app.textfield/pull/17\n  [thet]\n\n\n2.0.5 (2015-11-25)\n------------------\n\nNew:\n\n- Show thumbs when leadimage behavior enabled for eventtype:\n  see  https://github.com/plone/Products.CMFPlone/issues/1226\n  [fgrcon]\n\nFixes:\n\n- Cleanup tasks: Only install the plone.app.widgets profile for Plone 4.3.\n  Remove the unnecessary ``plone50`` setup.py extra section. Fix\n  plone.app.event to also work with plone.app.z3cform versions below < 1.0.\n  [thet]\n\n- Cleanup buildout: Remove sources.cfg, versions.cfg, test.cfg, test-43.cfg and\n  test.cfg. Since this package is merged, it doesn't make much sense to\n  maintain separate version and sources files to extend from. Tests and\n  development environment is built in the buildout.cfg and buildout-43.cfg\n  files. Remove bootstrap.py - use ``virtualenv .; ./bin/pip install\n  zc.buildout`` instead.\n  [thet]\n\n- In tests, use ``selection.any`` in querystrings.\n  Issue https://github.com/plone/Products.CMFPlone/issues/1040\n  [maurits]\n\n\n2.0.4 (2015-10-28)\n------------------\n\nFixes:\n\n- Fixed the occurrences calculation to reliably return an Event instead of\n  Occurrence object for the originating event. There was a bug introduced by a\n  newer pytz version.\n  [thet]\n\n\n2.0.3 (2015-09-27)\n------------------\n\n- Plone 4 compatibility for ``get_default_page`` import.\n  [thet]\n\n\n2.0.2 (2015-09-21)\n------------------\n\n- Update French translations\n  [enclope]\n\n- Resolve deprecation warning for getDefaultPage.\n  [jensens]\n\n- Fix word break on event linsting template\n  [sneridagh]\n\n\n2.0.1 (2015-09-20)\n------------------\n\n- Enable event-portlet by default.\n  Fixes https://github.com/plone/Products.CMFPlone/issues/760\n  [pbauer]\n\n- Prevent negative number of items in event-portlet.\n  [pbauer]\n\n- Remove unittest2 dependency.\n  [gforcada]\n\n- Resolve deprecation warning for getDefaultPage.\n  [fulv]\n\n\n2.0 (2015-09-11)\n----------------\n\n- Updated basque translation\n  [erral]\n\n\n2.0b2 (2015-08-20)\n------------------\n\n- Unified event_listing style with plonetheme.barceloneta styles and added svg\n  icons.\n  [agitator]\n\n- initialize events.js javascript after all patterns are initialized.\n  [garbas]\n\n- removing dependency on plone.app.contenttypes that introduce with latest\n  changes to portlets code.\n  [garbas]\n\n\n2.0b1 (2015-07-18)\n------------------\n\n- Make configlets titles consistent across the site, first letter capitalized.\n  [sneridagh]\n\n\n2.0a13 (2015-07-15)\n-------------------\n\n- Fix some design issues in ``event_listing``.\n  [pbauer]\n\n- Remove superfluous ``for`` in behavior registrtions, which do not have a\n  ``factory``.\n  [fulv]\n\n- For event listings, view-cache the ``events`` method, which is directly used\n  in templates and also caches collection results instead of the\n  ``_get_events`` method.\n  [thet]\n\n- Show only upcoming occurrences in the for ``@@event_summary`` for events with\n  occurrences. On the last occurrence, only a link to all occurrences via\n  ``@@event_listing`` is shown.\n  [thet]\n\n- Translation updates (num_more_occurrences).\n  [thet]\n\n- For event listings on collections, use the collection's ``item_count``\n  attribute to limit the batch size.\n  [thet]\n\n- For the event portlet, don't cache the list of events on memoize instance,\n  which creates a write transaction. Remove the caching until a solid cache key\n  is found, which also works for multiple portlet instances.\n  [thet]\n\n- BBB portlets: do the version comparison with LooseVersion, so that\n  Plone-style development version numbers like ``2.5.4.dev0`` also work.\n  [thet]\n\n- Let ``date_speller`` return the short, 2-letter weekday abbreviation instead\n  of a 3-letter one.\n  [thet]\n\n- Remove inconsistency in date_speller and rename ``month`` and ``wkday`` keys\n  to ``month_name`` and ``wkday_name``. Introduce ``month``, the non-zero\n  padded numeric value of the current month, ``month2``, the zero-padded one,\n  ``wkday``, the weekday number and ``week``, the weeknumber of the current\n  year.\n  [thet]\n\n- Make configlets titles consistent across the site, first letter capitalized\n  [sneridagh]\n\n\n2.0a12 (2015-06-05)\n-------------------\n\n- Unwrap search_base for portlets, as it might be wrapped by the portlet\n  renderer class. Fixes an error with getting the events to display.\n  [thet]\n\n- Import BBB superclasses from  plone.app.portlets.portlets.base so it works\n  with plone.app.portlets 3.0 and up\n  [frapell]\n\n\n2.0a11 (2015-05-13)\n-------------------\n\n- Rerelease, because one of our test servers complains about the\n  previous release.\n  [maurits]\n\n\n2.0a10 (2015-05-13)\n-------------------\n\n- For ``event_listing`` on Collections, ignore the Collection's sorting and use\n  what the event listing's mode defines for sorting.\n  [thet]\n\n- Add support for Collections as data source for calendar and event portlets.\n  [thet]\n\n- Extend Collection support on ``event_listing`` for content items providing\n  ``ISyndicatableCollection``.\n  [thet]\n\n\n2.0a9 (2015-05-04)\n------------------\n\n- Support for ``contentFilter`` on request for ``event_listing``.\n  [thet]\n\n- Fix ``ImageScalingViewFactory`` and add a custom ILeadImage viewlet for\n  Occurrences. Fixes the display of ILeadImage images from the originating\n  event in event views of occurrences by delegating to the parent object.\n  [thet]\n\n- Fix Plone 4.3 BBB z3c.form portlets to show their fields in Add/Edit Forms.\n  [thet]\n\n- Update Japanese translation.\n  [terapyon]\n\n2.0a8 (2015-03-26)\n------------------\n\n- Remove ``get_location`` view helper method. This was used to allow external\n  addons (specifically ``collective.venue``) to override it and return a html\n  link to a location object instead. Instead of this hack, which also only\n  works for the location use case, override the necessary templates in your\n  addons. In case of doubt, simplicity outweigh extensibility options.\n  [thet]\n\n- Change ``adapts`` and ``implements`` to their decorator equivalents\n  ``adapter`` and ``implementer``.\n  [thet]\n\n- Change ``event_listing`` to search only in current context and below, not the\n  whole portal by default. Remove the setting ``current_folder_only``, which\n  was annotated to the context. Since the collection support is much better now,\n  use them for custom searches.\n  [thet]\n\n- Fix a bug in displaying the ``event_listing`` on Collections. Show the date\n  filter on Collections, if no start/end critierias are given in the\n  Collection's query.\n  [thet]\n\n- Add a CSS class for the timezone in the events portlet and the\n  ``event_summary`` view.\n  [mitakas]\n\n- In the ``event_summary`` view, change the ``event-timezone`` list-item class\n  to ``event-date``.\n  [thet]\n\n\n2.0a7 (2015-03-13)\n------------------\n\n- In the event_view, use the ``#parent-fieldname-text`` wrapper for text\n  output, because of consistency.\n  [thet]\n\n\n2.0a6 (2015-03-04)\n------------------\n\n- Some Plone 5 related js improvements\n  [vangheem]\n\n- Use Plone 5 imports from plone.app.z3cform and make plone.app.widgets a soft\n  dependency.\n  [vangheem]\n\n- Remove support for ``plone.app.collection`` and ``ATTopic`` - plone.app.event\n  2.x is Dexterity only.\n  [thet]\n\n- Fix ``construct_calendar`` in plone.app.event.base to also return events for\n  the first day in the calendar month.\n  [thet]\n\n- Remove ``data_postprocessing`` logic, which was handling ``open_end`` and\n  ``whole_day`` events and was manipulating the object on form submission.\n  Instead, just adapt start/end dates on indexing and when accessing them via\n  ``IEventAccessor``.\n  [thet]\n\n- Remove the ``plone.app.event.EventTypes`` vocabulary, which relied on\n  temporarily creating types. It's used for importing ical files. It should be\n  possible to figure out, which types might suitable for creating events from\n  ical VEVENT entries.\n  [thet]\n\n- No need to return DateTime objects for the indexer.\n  Products.DateRecurringIndex works with Python datetime objects.\n  [thet]\n\n- Whole day setting doesn't hide effective range anymore. Fixes issue #167.\n  [thet]\n\n\n2.0a5 (2014-10-23)\n------------------\n\n- Fix German translation for Monat.\n  [thet]\n\n- Integration of the new markup update and CSS for both Plone and Barceloneta\n  theme. This is the work done in the GSOC Barceloneta theme project.\n  [albertcasado, sneridagh]\n\n- Update markup for portlets and change dt dl for ul li tags.\n  [albertcasado]\n\n- Added locales for Catalan and Spanish\n  [sneridagh]\n\n\n2.0a4 (2014-07-22)\n------------------\n\n- Restore Plone 4.3 compatibility.\n  [datakurre]\n\n- Fix event.js Javascript, which produced Javascript date parsing errors when\n  changing the start date in Firefox. Firefox does not parse date string, which\n  are only nearly ISO 8601 compatible, without a \"T\" between the date and time\n  part. Chrome on the other hand interprets timezone naive date/time strings as\n  UTC and returns it localized to the user's timezone, which leads to shifting\n  date/time values. For more info see this Bug report:\n  https://code.google.com/p/chromium/issues/detail?id=145198\n  [thet]\n\n- Do not set the simple_publication_workflow in the p.a.event test fixture.\n  [timo]\n\n- Add ``location`` indexer. ``location`` is a default metadata field in\n  portal_catalog so we should provide that information by default.\n  [saily]\n\n\n2.0a3 (2014-05-06)\n------------------\n\n- Fix a rare issue with event_summary, where a object's UID cannot be found in\n  the catalog.\n  [thet]\n\n- Update plone.formwidget.recurrence version dependency for plone.app.widgets\n  support.\n  [thet]\n\n\n2.0a2 (2014-04-19)\n------------------\n\n- Re-add some BBB Assignment class attributes for calendar and event portlets\n  to not break Plone upgrades.\n  [thet]\n\n\n2.0a1 (2014-04-17)\n------------------\n\n- Make use of new z3c.form DataExtractedEvent and register the\n  data_postprocessing_handler for this event. This adjusts the start and end\n  date according to whole_day and open_end.\n\n- Use default_timezone DatetimeWidget property. All datetime objects from\n  plone.app.widgets' DatetimeWidget now have this timezone, if not otherwise\n  set by the user.\n\n- Move controlpanel to Products.CMFPlone.controlpanel.\n\n- Move vocabularies to plone.app.vocabularies and use plone.* instead of\n  plone.app.event.* prefix for registry keys.\n\n- Use default and defaultFactory properties for behavior schema definitions to\n  provide sane defaults for z3c.form *and* programmatically created Dexterity\n  types (e.g. via plone.dextterity.utils.createContentInContainer). For that to\n  work, remove the Behavior factory classes, use the default AttributeStorage\n  and let IEventBasic and IEventRecurrence behaviors derive from IDXEvent resp.\n  IDXEventRecurrence.\n\n- Remove data_postprocessing event subscriber.\n\n- Remove Timezone field from IEventBasic behavior. Instead, store timezone\n  information directly in the tzinfo object on start and end datetime objects.\n\n- Remove Archetypes subpackage.\n\n[thet, yenzenz, garbas]\n\n\n1.2.3 (2014-04-17)\n------------------\n\n- Remove DL's from portlet templates, replacing it with semantically correct\n  tags. Ref: https://github.com/plone/Products.CMFPlone/issues/163\n  [khink]\n\n\n1.2.2 (2014-04-15)\n------------------\n\n.. note::\n\n    Methods used for the ``event_summary`` view have has been moved from the\n    ``event_view`` to ``plone.app.event.browser.event_summary``. The\n    ``occurrence_parent_url`` method has been removed.\n\n- Simplify buildout infrastructure: Move base-test.cfg to test.cfg, move\n  base.cfg to buildout.cfg, remove test-43.cfg, sources-dev.cfg and\n  jenkins.cfg.\n  [thet]\n\n- Disable the edit bar on Occurrence objects. They are transient and cannot be\n  edited. Remove the visual distinction between IEvent and IOccurrences in the\n  event_summary view. The user is likely not interested, if a Occurrence or the\n  original Event is shown.\n  [thet]\n\n- Add a portal_type attribute to Occurrence objects and set it to 'Occurrence',\n  so they can be easily identified without looking up interfaces.\n  [thet]\n\n- Add an event_listing view for IEvent objects to show all of it's occurrences.\n  [thet]\n\n- Change the occurrence listing in the @@event_summary view to directly link\n  to the occurrence objects, rename the label to 'All dates' and also include\n  the first date of the original event. The event_summary's max_occurrences\n  attribute now also includes the starting event.\n  [thet]\n\n\n1.2.1 (2014-04-05)\n------------------\n\n- Changes in the Dexterity IRichText behavior migration: don't fail, if no\n  Event type is found in the Dexterity FTI and remove the old IEventSummary\n  behavior, if found.\n  [thet]\n\n- Don't use spamProtect script to render email address; it doesn't do much.\n  [davisagli]\n\n- Add an @@event_summary view, which provides the event summary listing in the\n  event view for the purpose of reuse elsewhere. Allow the exclusion of\n  information via an excludes list. The relevant methods are moved from\n  event_view to event_summary.\n  [thet]\n\n- Improve markup of ``event_listing.pt`` in order to not break on IE 8.\n  [rafaelbco]\n\n- Use z3c.form for portlet forms.\n  [bosim, davisagli]\n\n\n1.2 (2014-03-01)\n----------------\n\n- Don't use spamProtect script to render email address; it doesn't do much.\n  [davisagli]\n\n- Drop usage of plone.formwidget.datetime and use plone.app.widgets instead.\n  [garbas, davisagli]\n\n- Fix label of 'Dates' fieldset.\n  [esteele]\n\n\n1.1b1 (2014-02-17)\n------------------\n\n.. note::\n\n    The ``ploneintegration`` setuptools extra and GenericSetup profile have\n    been removed for this version. This makes an integration into Plone and\n    ``plone.app.contenttypes`` easier. Please remove them also in your setup\n    and be sure to depend on ``plone.app.portlets>=2.5a1``!\n\n.. note::\n\n    In the event_view template, the event summary has changed from a table to a\n    definition list layout. The event_view's next_occurrences method does not\n    return a dictionary anymore, but only a list of next events. Also, the\n    index_html template for Occurrences is renamed to event_view.  If you have\n    custom view templates for IEvent or IOccurrence objects, you have to update\n    them.\n\n.. note::\n\n    The plone.app.event.dx.event type has been moved to the\n    plone.app.event:testing profile and the plone.app.event.dx:default profile\n    has been removed. Use plone.app.contenttypes for a Dexterity based Event\n    type, which utilizes plone.app.event's Dexterity behaviors.\n\n\n- Remove Plone 4.2 compatibility. For more information see installation.rst in\n  the docs.\n  [thet]\n\n- Move the plone.app.event.dx.event example type to the plone.app.event:testing\n  profile and remove the plone.app.event.dx:default profile. Use the Event type\n  from plone.app.contenttypes instead. Fixes #99.\n  [thet]\n\n- Remove the IEventSummary behavior and use the generic IRichText from\n  plone.app.contenttypes instead. Fixes #140, Closes #142.\n  [pysailor]\n\n- Change the event detail listing in the event_view to be a definition list\n  instead of a table, making it semantically more correct and the code less\n  verbose. Fixes #141.\n  [thet]\n\n- For recurring events, don't show the last recurrence in the event view but\n  the number of occurrences, queried from the catalog. Together with the\n  previous generator-change this looping over the whole occurrnce list.\n  [thet]\n\n- Change the IRecurrenceSupport adapter's occurrence method to return again a\n  generator, fixing a possible performance issue. Fixes #60.\n  [thet]\n\n- Replace RecurrenceField with plain Text field in the dx recurrence behavior.\n  This reverts the change from 1.0rc2. We don't use form schema hints but an\n  adapter to configure the widget. Closes #137, Fixes #131.\n  [pysailor]\n\n- Use attribute storage instead of annotation storage in all Dexterity\n  behaviors. Closes #136, #95, Refs #20.\n  [pysailor]\n\n- Rename the Occurrence's 'index_html' view to 'event_view' for better\n  consistency. This also fixes an issue with Solgema.fullcalendar.\n  Closes #123.\n  [tdesvenain]\n\n- Fix get_events recurring events sorting, where it was only sorted by the\n  brain's start date, which could easily be outside the queried range.\n  [gyst]\n\n- Avoid failing to create an event when zope.globalrequest.getRequest returns\n  None on the post create event handler. This happens when creating an event\n  during test layer setup time.\n  [rafaelbco]\n\n- iCalendar import: Also import objects, when the \"last-modified\" property was\n  not changed. This conforms to the RFC5545:\n  http://tools.ietf.org/search/rfc5545#section-3.8.7.3\n  [jone]\n\n\n1.1.a1 (2013-11-14)\n-------------------\n\n- Don't fail, if first_weekday isn't set in registry.\n  [thet]\n\n- plone.app.widgets compatibility\n  [garbas]\n\n- Set the first_weekday setting based on the site's locale when the default\n  profile is activated.\n  [davisagli]\n\n- Allow query parameters for timezone vocabularies for filtering. Create the\n  \"Timezones\" vocabulary from SimpleTerm objects with a value and title set\n  for better support with plone.app.widgets AjaxSelectWidget.\n  [thet]\n\n- Remove \"ploneintegration\" from setuptools extra section and GenericSetup\n  profile. PLEASE UPDATE YOUR INSTALLATIONS, to use Archetypes or Dexterity\n  instead and to use plone.app.portlets 2.5a1! This change makes it easier for\n  Plone to integrate plone.app.event.\n  [thet]\n\n\n1.0.5 (2014-02-11)\n------------------\n\n- For ical exports, remove X-WR-CALNAME, X-WR-CALID and X-WR-CALDESC.\n  X-WR-CALNAME caused Outlook to create a new calendar on every import. These\n  properties are not necessary and not specified by RFC5545 anyways.\n  Fixes #109, closes #132.\n  [tomgross, thet]\n\n- Add Traditional Chinese Translation. Closes #129.\n  [l34marr]\n\n- Changed `dates_for_display` and `get_location` to accept IEvent, IOccurrence\n  and IEventAccessor objects and avoid confusion on using these methods.\n  [thet]\n\n- Added basque translation.\n  [erral]\n\n- Completed italian translation.\n  [giacomos]\n\n\n1.0.4 (2013-11-23)\n------------------\n\n- Register event.js Javascript as \"cookable\" to allow merging with other files\n  and provide the \"plone\" global if it wasn't already defined.\n  [thet]\n\n\n1.0.3 (2013-11-19)\n------------------\n\n- Remove unnecessary data parameter on urllib2.urlopen, which caused a 404\n  error on some icalendar imports from external resources (E.g. Google).\n  [thet]\n\n- Avoid \"FileStorageError: description too long\" on large icalendar imports by\n  doing a transaction commit instead of a savepoint.\n  [thet]\n\n- Protect ical imports with the newly created plone.app.event.ImportIcal\n  permission.\n  [thet]\n\n- plone.app.widgets compatibility.\n  [garbas]\n\n- Fix UnicodeDecodeError with special characters in body text. Fixes #108\n  [zwork][agitator]\n\n\n1.0.2 (2013-11-07)\n------------------\n\n- Fix the path for catalog search in ical importer. This fixes an issue, where\n  no existing events could be found when importing a ical file again in virtual\n  hosting environments. Also, search for any existing events, not only what the\n  user is allowed to see.\n  [thet]\n\n- Fix Plone 4.2 buildout and test environment.\n  [thet]\n\n\n1.0.1 (2013-11-07)\n------------------\n\n- Fix ical import form import error. Translation string wasn't properly\n  formatted. Also be forgiving about missing LAST-MODIFIED properties from ical\n  files.\n  [thet]\n\n\n1.0 (2013-11-06)\n----------------\n\n- Implement synchronisation strategies for icalendar import.\n  [thet]\n\n- Implement icalendar import/export synchronisation and add sync_uid index and\n  sync_uid fields for ATEvent and IEventBasic. This follows RFC5545, chapter\n  \"3.8.4.7. Unique Identifier\". The sync_uid index can also be used for any\n  other synchronisation tasks, where an external universally unique identifier\n  is used.\n  [cillianderoiste, thet]\n\n- Don't show the repeat forever button in the recurrence widget.\n  [thet]\n\n- Fix icalendar export for collections and Archetype topics. Fixes #104.\n  [thet]\n\n- Don't include occurrences in icalendar exports of event_listing, but include\n  the original event with it's recurrence rule. Fixes #103.\n  [thet]\n\n- Don't include the recurrence definition when doing icalendar exports of\n  individual occurrences. Fixes: #61.\n  [thet]\n\n- Restore Javascript based edit-form functionality to set end dates depending\n  on start dates with the same delta of days as initialized, as developed by\n  vincentfretin back at plone.app.event's birth.\n  [thet]\n\n- Deprecate the plone.app.event.dx.event type and plone.app.event.dx:default\n  profile.  Please create your own type based on plone.app.event's Dexterity\n  behaviors or use the \"Event\" type from plone.app.contenttypes. The\n  plone.app.event:default profile is sufficient also for Dexterity-only based\n  installations.\n  [thet]\n\n- Remove the behaviors plone.app.relationfield.behavior.IRelatedItems and\n  plone.app.versioningbehavior.behaviors.IVersionable from the Dexterity\n  example type. We don't depend on these packages and won't introduce an\n  explicit dependency on it.\n  [thet]\n\n- In portlet calendar and events, don't use the search_base directly to\n  construct calendar urls. The search base always starts from the Plone site\n  root, which led to wrong urls in Lineage subsites.\n  [thet]\n\n- Don't validate end dates for open ended events, so open ended events in the\n  future can be saved via the form. Fixes #97\n  [gyst]\n\n- Ical importer: Fix default value for imported attendees and categories.\n  Return an empty tuple instead of None so that the edit form can be rendered.\n  [cillianderoiste]\n\n- Fix event_listing view on Collections to expand events. Fixes #91, Fixes #90.\n  [thet]\n\n- Don't show the event_listing_settings view in the object actions for\n  event_listings on Collections or Topics, as it doesn't make sense there.\n  [thet]\n\n- Fix case, where the events, which started before a queried timerange and\n  lasts into the timerange were not included in the list of event occurrences.\n  [thet]\n\n- Fix wrong result set with \"limit\" applied in get_events. Limiting for\n  occurrence-expanded events can just happen after all occurrences are picked\n  up in the result set, otherwise sorting can mess it up.\n  [petschki]\n\n- Indexer adapter for SearchableText: fixed encoding inconsistencies.  Always\n  return utf-8 encoded string while using unicode internally.\n  [seanupton]\n\n- In test-setup, explicitly install DateRecurringIndex instead of extending\n  it's test layer fixture. This should finally fix #81, where other tests\n  couldn't be run when not extending the DRI or PAE test fixture layers.\n  [thet]\n\n- Support the @@images view for IOccurrence objects by using a factory, which\n  returns a AT or DX specific view depending on the Occurrence's parent.\n  [thet]\n\n- Switch off linkintegrity checks during upgrade from atct to pae.at.\n  [jensens]\n\n- Remove event and calendar portlet assignments on plone.rightcolumn.\n  Integrators should do assignments themselves, as they are likely different\n  from the standard assignment.\n  [thet]\n\n- Don't fail, if timezone isn't set.\n  [gforcada]\n\n\n1.0rc3 (2013-08-23)\n-------------------\n\n- Fix get_events with ret_mode=3, expand=True, without recurrence\n  It was returning full object instead of IEventAccessor instances.\n  This also fix event portlet with norecurrent events.\n  [toutpt]\n\n\n1.0rc2 (2013-07-21)\n-------------------\n\n- Introduce a BrowserLayer and register all views for it. Avoids view\n  registration conflicts with other packages.\n  [thet]\n\n- For the recurrence behavior In z3c.form based Dexterity forms, use the\n  RecurrenceField instead of a plain Text field. This ensures that the\n  recurrence widget is used even for plain z3c.form forms without form schema\n  hints. This change is forward-compatible and should not break any existing\n  installations.\n  [thet]\n\n- In z3c.form based Dexterity forms, use plone.autoform form hints for widget\n  parameters and remove the ParameterizedWidgetFactory. plone.autoform 1.4\n  supports widget parameter form hints.\n  [thet]\n\n- Update french translations.\n  [toutpt]\n\n- Fix icalendar importer to support multiple-line EXDATE/RDATE definitions.\n  [thet]\n\n- Fix runtime error in icalendar importer.\n  [gbastien]\n\n- For the setup's tests extra, depend on plone.app.testing <= 4.2.2 until the\n  Dexterity and Archetypes tests are split up and the tests don't have a hard\n  dependency on Archetypes.\n  [thet]\n\n- Remove dependency on \"persistent\" to not use that one over the ZODB bundled\n  package. \"persistent\" will become available as separate package with ZODB 4.\n  [thet]\n\n- Declare minimum dependency on plone.event 1.0rc1.\n  [thet]\n\n- Buildout infrastructure update.\n  [thet]\n\n- Remove deprecations.\n  [thet]\n\n\n1.0rc1 (2013-07-03)\n-------------------\n\nPlease note, the next release will have all deprections removed.\n\n- For events lasting longer than the day they start, include them in the\n  construct_calendar data structure on each day they occur. Fixes #76.\n  [thet]\n\n- Fix ATEvent's StartEndDateValidator subscription adapter to correctly return\n  error dicts.\n  [thet]\n\n- In the ATEvent migration step, call ObjectModifiedEvent for each migrated\n  event to call off the data_postprocessing method, which assures correct time\n  values in respect to timezones. Please note, the timezone must be set\n  correctly before!\n  [thet]\n\n- Rename the formated_date and formated_start_date content providers to\n  have the correct spelling of \"formatted\". Doing this change now while this\n  package's adoption is not too wide spread.\n  [thet]\n\n- Use same i18n field and error message strings for ATEvent and DX behaviors.\n  [thet]\n\n- Let plone.app.event.base.get_events always do a query with a sort definition,\n  even if we are in expand mode and do a sort afterwards again. We need this to\n  get stable results when having a sort_limit applied. Fixes an issue where the\n  events_portlet did show the next events with an offset of some days.\n  [thet]\n\n- For the event and calendar portlets, use UberSelectionWidget to select the\n  search base path to make this field actually usable.\n  [thet]\n\n- Remove ICalendarLinkbase adapter, which provided URLs to a calendar view.\n  Instead, for event and calendar portlet links, the searchbase setting path\n  is used to link to it or as fallback to call event_listing on ISite root.\n  [thet]\n\n- As like in event_view, use the get_location function for supporting location\n  references in event_listing and portlet_events. Implement get_location just\n  as a simple wrapper - handling of references must be provided by external\n  packages, like collective.venue.\n  [thet]\n\n- Fixed unicode issue in event_view with non-ascii location strings and\n  of referenced locations via collective.venue.\n  [thet]\n\n- In event_listing views in \"past\" or \"all\" modes, do a reverse sort on the\n  results, starting with newest events.\n  [thet]\n\n- Create an Python based import step to properly set up the portal catalog.\n  This avoids clearing the index after importing a catalog.xml. This import\n  steps obsoletes the ploneintegration catalog.xml import step also.\n  [thet]\n\n- Add a event listing settings form, which allows configuration of the event\n  listing view via annotations on the context.\n  [thet]\n\n- For the event listing view, accept SearchableText and tags request parameters\n  for filtering the result set.\n  [thet]\n\n- For default_start and default_end, return a datetime with minute, second and\n  microsecond set to 0.\n  [thet]\n\n- Don't overload ATEvent's subject widget label and help texts but use AT and\n  DX standard label_tags and help_tags messages.\n  [thet]\n\n- Fix compact event edit form layouts and don't float the recurrence widget.\n  [thet]\n\n- Change default listing mode in event_listing and replace \"All\" with separate\n  \"Future\" and \"Past\" buttons.\n  [thet]\n\n\n1.0b8 (2013-05-27)\n------------------\n\n- Fix OccurrenceTraverser to fallback to plone.app.imaging's ImageTraverser, if\n  present and thus support image fields on plone.app.event based types.\n  [thet]\n\n- Change the AT validation code to an subsciption adapter. This allows reliable\n  validation for types derived from ATEvent, which wasn't the case with the\n  post_validate method.\n  [thet]\n\n- More compact layout for AT and DX edit forms.\n  [thet]\n\n- Add open_end option for Dexterity behaviors and Archetypes type.\n  [thet]\n\n- For whole_day events, let dates_for_display return the iso-date\n  representation from date and not datetime instances.\n  [thet]\n\n- Remove support of microseconds and default to a resolution of one second for\n  all datetime getter/setter and conversions. Microseconds exactness is not\n  needed and dateutil does not support microseconds which results in unexpected\n  results in comparisons.\n  [thet]\n\n- Changing the timezone in events is a corner case, so the timezone field is\n  moved to the \"dates\" schemata for AT and DX.\n  [thet]\n\n- Remove font-weight bold for monthdays and font-weight normal for table header\n  in portlet calendar. Set div.portletCalendar with to auto instead of\n  unnecessary 100% + margin. Align with plonetheme.sunburst.\n  [thet]\n\n- Let the IRecurrenceSupport adapter return the event itself, when the event\n  starts before and ends after a given range_start. Fixes a case, where\n  get_events didn't return a long lasting event for a given timeframe with\n  expand set to True.\n  [thet]\n\n- Let the @@event_listing view work on IATTopic and ICollection contexts.\n  [thet]\n\n- In event_view, handle the case that the location field is not of type\n  basestring but a reference to another object, for example provided by\n  collective.venue.\n  [thet]\n\n- Use plone.app.event's MessageFactory for ATEvent.\n  [thet]\n\n- Let EventAccessor for Archetypes based content type return it's values from\n  property accessors instead properties directly. This let's return the correct\n  value when an property gets overridden by archetypes.schemaextender.\n  [thet]\n\n- Deprecate upgrade_step_2 to plone.app.event beta 2, which is likely not\n  necessary for any existing plone.app.event installation out there.\n  [thet]\n\n- For the Archetypes based ATEvent migration step, do a transaction.commit()\n  before each migration to commit previous changes. This avoids running out of\n  space for large migrations.\n  [thet]\n\n- Let IEventAccessor adapters set/get all basestring values in unicode.\n  [thet]\n\n- Add and install plone.app.collection in test environment, as we cannot assume\n  that it's installed.\n  [thet]\n\n- Re-Add cmf_edit method for ATEvent to ensure better backwards compatibility.\n  Move related cmf_edit tests from Products.CMFPlone to plone.app.event.\n  [thet]\n\n- Add Event profile definition for ATEvent completely in order to remove it from\n  Products.CMFPlone. ATEvent is installed by ATContentTypes automatically as\n  part of upcoming plone.app.contenttypes merge.\n  [thet]\n\n- Optimize css by using common classes for event_listing and event_view.\n  [thet]\n\n- Add schema.org and hCalendar microdata to event_view and event_listing views.\n  Fixes #2, fixes #57.\n  [thet]\n\n\n1.0b7 (2013-04-24)\n------------------\n\n- Don't show plone.app.event:default and\n  plone.app.event.ploneintegration:prepare profiles when creating a Plone site\n  with @@plone-addsite.\n  [thet]\n\n- Remove render_cachekey from portlet_events, since it depends on an\n  undocumented internal _data structure, which must contain catalog brains.\n  [thet]\n\n- In tests, use AbstractSampleDataEvents as base class for tests, which depend\n  on AT or DX event content.\n  [thet]\n\n- Introduce create and edit functions in IEventAccessor objects.\n  [thet]\n\n- API Refactorings. In base.py:\n    * get_portal_events and get_occurrences_from_brains combined to get_events.\n    * get_occurrences_by_date refactored to construct_calendar.\n    * Renamings:\n        - default_start_dt -> default_start,\n        - default_end_dt -> default_end,\n        - cal_to_strftime_wkday -> wkday_to_mon1,\n        - strftime_to_cal_wkday -> wkday_to_mon0.\n\n    * Remove:\n        - default_start_DT (use DT(default_start()) instead),\n        - default_end_DT (use DT(default_end()) instead),\n        - first_weekday_sun0 (use wkday_to_mon1(first_weekday()) instead),\n        - default_tzinfo (use default_timezone(as_tzinfo=True) instead).\n\n  In ical:\n    * Renamed construct_calendar to construct_icalendar to avoid same name as\n      in base.py.\n\n  BBB code will be removed with 1.0.\n  [thet]\n\n- Update translations and translate event_view and event_listing.\n  [thet]\n\n- Configure event_listing to be an available view on Collections, Folders,\n  Plone Sites and Topics.\n  [thet]\n\n- Depend on plone.app.dextterity in ZCML, so that all DublinCore metadata\n  behaviors are set up correctly.\n  [thet]\n\n- Backport from seanupton: IObjectModifiedEvent subscriber returns early on\n  newly created event (Commit c60c8b521c6b1ca219bfeaddb08e26605707e17 on\n  https://github.com/seanupton/plone.app.event).\n  [seanupton]\n\n- Calendar portlet tooltips css optimizations: max-with and z-index.\n  [thet]\n\n- Add Brazilian Portuguese translation\n  [ericof]\n\n- Add ical import feature, register action to enable it and add a object tab to\n  the @@ical_import_settings form. .ics files can be uploaded or fetched from\n  the net from other calendar servers.\n  [thet]\n\n- Since more ical related code is upcoming (importer), add ical subpackage and\n  move ical related code in here.\n  [thet]\n\n- When exporting whole_day/all day events to icalendar, let them end a day\n  after at midnight instead on the defined day one second before midnight. This\n  behavior is the preferred method of exporting all day events to icalendar.\n  [thet]\n\n- Additionally to the 'date' parameter, allow passing of year, month and day\n  query string parameters to the event_listing view and automatically set the\n  mode to 'day' if a date was passed.\n  [thet]\n\n- Backport from plone.app.portlets: Don't fail on invalid (ambiguous) date\n  information in request (Commit a322676 on plone.app.portlets).\n  [tomgross]\n\n- Backport from plone.app.portlets: Use str view names for getMultiAdapter\n  calls (commit c296408 on plone.app.portlets).\n  [wichert]\n\n\n1.0b6 (2013-02-14)\n------------------\n\n- Styles for event_listing date navigation.\n  [thet]\n\n- Add datepicker for day selection in event_listing view.\n  [thet]\n\n- Fix event_listing to search only for events in the current context's path.\n  Allow \"all\" request parameter for no path restriction in searches.\n  [thet]\n\n- Backport change from seanupton: get_portal_events() fix: navroot path index\n  incorrectly passed as tuple, now fixed to path string.\n  [seanupton, thet]\n\n- Fix get_portal_events to respect path for query if given in keywords.\n  [thet]\n\n\n1.0b5 (2013-02-11)\n------------------\n\n- Restore Python 2.6 compatibility by avoiding total_seconds method from\n  timedelta instances in icalendar export.\n  [thet]\n\n\n1.0b4 (2013-02-08)\n------------------\n\n- Remove occurrences.html view because it's replaced by event_listing view.\n  [thet]\n\n- Changed Dexterity event-type title from \"Event (DX)\" to \"Event\" for\n  consistent naming between Archetypes and Dexterity content types.\n  [thet]\n\n- Updated and synced translations (.pot and German translations).\n  [thet]\n\n- Use content-core fill/define metal definitions in all templates which use\n  main_template's master macro.\n  [thet]\n\n- Calendar Portlet: Better portlet and tooltip styling. Drop usage of\n  todayevent and todaynoevent classes. Fix Linking to calendar_listing.\n  [thet]\n\n- Event listing: Optimized layout and styles, mode switch, calendar-navigation,\n  timespan header.\n  [thet]\n\n- Implement week and month mode for start_end_from_mode function.\n  [thet]\n\n- Add icalendar timezone support and properly export whole day events.\n  Fixes #22, Fixes #71.\n  [thet]\n\n- Don't set icon_expr for the Dexterity content type and use css instead.\n  [thet]\n\n- Restore compatibility to Plone 4.3 by including the ploneintegration module\n  also for Plone 4.3 but not 4.4.\n  [thet]\n\n- Version fix for z3c.unconfigure==1.0.1. This fix can be removed, once Plone\n  depends on zope.configuration>=3.8.\n  [thet]\n\n- Add icon_export_ical.png from Products.ATContentTypes to plone.app.event.\n  [thet]\n\n- Configure first_day parameter for DateTime and Recurrence Widget (AT and DX).\n  [thet]\n\n- Configure the default_view of plone.app.event's ATEvent to be @@event_view.\n  This prevents of referencing the old event_view from the plone_content skin\n  layer to be used in some cases.\n  [thet]\n\n- Style the calendar portlet tooltips only for the calendar portlet.\n  [thet]\n\n\n1.0b3 (2012-12-18)\n------------------\n\n- Set the CalendarLinkbase urlpath to respect the search_base in calendar and\n  event portlets.\n  [thet]\n\n- Depend on plone.app.portlets >= 2.4.0, since portlet_calendar needs the\n  render_portlet view for it's ajaxification. This may break Plone 4.2\n  integrations, until you make a buildout version fix.\n  [thet]\n\n- Remove dependency on Grok for the Dexterity behaviors.\n  [thet]\n\n- Just use classes instead of id's for the calendar portlet's page switcher.\n  [thet]\n\n- Reimplement the calendar page switcher from the calendar portlet with jQuery\n  and remove the implicit dependency on KSS.\n  [thet]\n\n- Use event_listing instead of the search view in CalendarLinkbase for calendar\n  and event portlets.\n  [thet]\n\n- Add new API functions:\n  [thet]\n\n  - date_speller to format a date in a readable manner,\n\n  - start_end_from_mode to return start and end date according to a mode string\n    (today, past, future, etc.),\n\n  - dt_start_of_day and dt_end_of_day to set a date to the start of the day\n    (00:00:00) and to the end of the day (23:59:59) for use in searches.\n\n- Add new event_listing view to show previous, upcoming, todays and other\n  events in a listing.\n  [thet]\n\n- Fix EventAccessor for ATEvent to correctly return the description.\n  [thet]\n\n- In portlet_calendar, grey-out previous and next month dates by making them\n  transparent.\n  [thet]\n\n\n1.0b2 (2012-10-29)\n------------------\n\n- Fix ical export of RDATE and EXDATE recurrence definitions. Fixes #63.\n  [thet]\n\n- Align ATEvent more to Archetypes standards and avoid AnnotationStorage and\n  ATFieldProperty. We needed to remove the ATFieldProperty for the timezone\n  field for a custom setter. By doing so, the other two ATFieldProperties were\n  changed too. This way, the ATEvent API gets more consistent. For a convenient\n  access to ATEvent as well as dextterity based event types, use the\n  IEventAccessor from plone.event.interfaces. Upgrade step from pre 1.0b2 based\n  ATEvent types is provided.\n  [thet]\n\n- Treat start/end datetime input always as localized values. Changing the\n  timezone now doesn't convert the start/end values to the new zone (AT, DX).\n  [thet]\n\n- Fix moving start/end dates when saving an unchanged DX event (issue #62).\n  [thet]\n\n- Portlet assignment fix. Now both - calendar and event portlet - are\n  installed.\n  [thet]\n\n\n1.0b1 (2012-10-12)\n------------------\n\n- Add the calendar portlet by default when installing plone.app.event.\n  [thet]\n\n- Backport changes from \"merge plip-10888-kss branch\" in plone.app.portlets.\n  KSS attributes still left in place for backwards compatibility.\n  [thet]\n\n- Buildout infrastructure update.\n  [thet]\n\n- Icalendar export of attendees almost according to the RFC5545 standard. At\n  the moment, we do not distinguish between CN and CAL-ADDRESS in Plone, so we\n  just put the attendee value to the CN and CAL-ADDRESS parameter. Fixes #24.\n  [thet]\n\n- Support microseconds for DateTime conversions. For recurrence rules,\n  timezones are not supported due to a python-datetime limitation.\n  [thet]\n\n- Don't allow ambiguous timezones like 'CET', which also have implementation\n  errors in DateTime. Force them to another zone. Timezones should be set\n  explicitly anyways.\n  [thet]\n\n- Let EventOccurrenceAccessor return its own URL instead of its parent.\n  Once again fixes #58.\n  [thet]\n\n- Fix calendar portlet header, which day names were shifted by one day since a\n  incompatibility between the calendar module (0 is Monday) and the strftime\n  function (0 is Sunday).\n  [thet]\n\n- Create an formated_date content provider, which takes an occurrence or event\n  object when called and formats the start/end date and times for display. This\n  content provider can be overridden for other contexts. E.g. the events\n  portlet uses just shows the start date and not the end date.\n  [thet]\n\n- Let IRecurrenceSupport adapter's occurrences method return as first\n  occurrence the event object itself instead of an Occurrence object.\n  Fixes #58.\n  [thet]\n\n- Include plone.event's new configure.zcml.\n  [thet]\n\n- For the ATEvent type, use a more specific IATEvent interface with IEvent and\n  P.ATCT's IATEvent as bases. So we can provide adapters, overriding more\n  general IEvent adapting adapters.\n  [thet]\n\n- Don't show start occurrence in \"More occurrences\" section in event_view.\n  [thet]\n\n- Create adapter ICalendarLinkbase which returns links to calendar views and\n  can be overridden through a more specific implementation by addon products.\n  For example, the portlet_calendar and portlet_events links to the @@search\n  view can be changed to URLs to a real calendar view, if one is installed.\n  [thet]\n\n- For portlet_calendar and portlet_events configuration, make the workflow\n  state selection optional. If nothing is selected, all states are searched.\n  [thet]\n\n- Add search_base (select path to search for events) and state (select review\n  state for events to search) to portlet_calendar settings and search_base to\n  portlet_events.\n  [thet]\n\n- Limit the amount of occurrences in the event view if the event yields\n  more than 7 occurrences. Show only 6 occurrences and the last\n  occurrence.\n  [romanofski]\n\n- More minor fixes.\n  [thet]\n\n  * Don't force DateTime conversion in query parameters of get_portal_events.\n    The catalog index uses Python's datetime anyways.\n\n  * Only set end date in _prepare_range to next day, if it's a date and not\n    datetime.\n\n  * Register the Archetypes postprocessing event subscribers also for\n    IObjectCreatedEvent.\n\n- Fix #51, logical error with range_end parameter in get_portal_events.\n  [thet]\n\n- Fix test startup by not depending on getSite().translate, which is a\n  filesystem script.\n  [thet]\n\n- Backport changes from davilima: Add safety check for False all_events_links.\n  [davilima6]\n\n- Make get_occurrences_by_date work for events which do not have\n  IRecurrenceSupport (e.g. Dexterity events without the recurrence behavior).\n  [thet]\n\n- Don't run event handlers for ATEvent, if it doesn't provide IEvent.\n  [thet]\n\n- Fix utf-8 encoding problem with icalendar export.\n  [rnix]\n\n- Unregister ics_view for ATFolder and ATBTreeFolder as well in\n  ploneintegration.\n  [rnix]\n\n- Workaround for buggy strftime with timezone handling in DateTime.\n  See: https://github.com/plone/plone.app.event/pull/47\n  [seanupton]\n\n- Rebind portlet_calendar tooltips after ajax calendar reloads.\n  [thet]\n\n- Allow the refreshCalendar kss view also on Occurrence objects.\n  [thet]\n\n- Let portlet_events link to @@search for future and previous events for sites\n  without the standard events folder.\n  [thet]\n\n- Moved docs/HISTORY.rst to CHANGES.txt.\n  [seanupton]\n\n- Calendar portlet search links now use @@search (from plone.app.search)\n  instead of (since Plone 4.2) deprecated ./search (search.pt).  Requires\n  recent plone.app.search changes.\n  [seanupton]\n\n- Integrate the plone.app.event-ploneintegration functionality for Plone\n  versions without plone.app.event core integration (all current version)\n  into this package for simplification.\n  [thet]\n\n- IEventSummary behavior added for body text on Dexterity event type,\n  as well as a SearchableText indexer adapter for the Dexterity event\n  type.\n  [seanupton]\n\n- Filter calendar portlet search URLs for each day to a whitelist of\n  event portal_type values.  Prevents non-event add-on types with\n  start/end fields from showing up in calendar, as defense against\n  unintended consequences (add-ons could explicitly override this\n  template if they define additional Event types).\n  [seanupton]\n\n- API refactoring:\n  * Move all generic interfaces to plone.event,\n  * Extend IEventAccessor adapters to also be able to set attributes.\n  [thet]\n\n- Copy plonetheme.sunburst styles for the calendar portlet to event.css. This\n  way, the calendar portlet is nicely styled, even without sunburst theme\n  applied.\n  [thet]\n\n- For Dexterity behaviors, use IEventRecurrence adapter to store attributes\n  directly on the context.  This fixes that recurrence occurrences start and\n  end dates were not indexed, because the DateRecurringIndex had not access to\n  the recurrence attribute.\n  [thet]\n\n- IRecurrence adapter returns now acquisition-wrapped occurrence\n  objects.\n  [romanofski]\n\n- Event portlet is now showing occurrences, sorted by start date.\n  [romanofski]\n\n- Moved whole_day field in directly after the end date to get a more logical\n  group.\n  [thet]\n\n- Added dedicated timezone validator with fallback zone.\n\n- Added traverser for occurrences. The event view is used to show\n  individual occurrences.\n  [romanofski]\n\n- Broken paging in the calendar portlet has been fixed (#11).\n  [romanofski]\n\n- Make the start DateTime timezone aware and fix an issue where the start date\n  was after the end date. Fixes: #8.\n  [romanofski]\n\n\n1.0a2 (2012-03-28)\n------------------\n\n- Add portlet GenericSetup registration for calendar and event portlet.\n  [thet]\n\n- API CHANGE: Use zope.annotation for behaviors, remove unnecessary factories,\n  create IRecurrence adapter for access to occurrences.\n  [thet]\n\n\n1.0a1 (2012-03-12)\n------------------\n\n- Initial alpha release.\n  [thet]\n",
    "bugtrack_url": null,
    "license": "GPL version 2",
    "summary": "The Plone calendar framework",
    "version": "5.1.2",
    "project_urls": {
        "Homepage": "https://github.com/plone/plone.app.event"
    },
    "split_keywords": [
        "plone",
        "event"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dc9f5af0f8f074a11ec3f3b9918302b1e0961157e9ee08d0bc91b55e976261e1",
                "md5": "0e24e84d56cee867dcc7a8f72233bf94",
                "sha256": "149480e64a266082788bdefe6c38bb080e822a45e28ecf261b764417464ec62b"
            },
            "downloads": -1,
            "filename": "plone.app.event-5.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0e24e84d56cee867dcc7a8f72233bf94",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 149292,
            "upload_time": "2024-04-16T19:33:09",
            "upload_time_iso_8601": "2024-04-16T19:33:09.991449Z",
            "url": "https://files.pythonhosted.org/packages/dc/9f/5af0f8f074a11ec3f3b9918302b1e0961157e9ee08d0bc91b55e976261e1/plone.app.event-5.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f6375bd1c087af2540b610f894ff2554c58606370c90156e9083cc05920eb5e5",
                "md5": "e68541c11ce1e8fb978ab2550afc7226",
                "sha256": "62889cfaa46e49decde526956cd1974389e9cb7cb7da2deedf267928179e7951"
            },
            "downloads": -1,
            "filename": "plone.app.event-5.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "e68541c11ce1e8fb978ab2550afc7226",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 173382,
            "upload_time": "2024-04-16T19:33:15",
            "upload_time_iso_8601": "2024-04-16T19:33:15.318855Z",
            "url": "https://files.pythonhosted.org/packages/f6/37/5bd1c087af2540b610f894ff2554c58606370c90156e9083cc05920eb5e5/plone.app.event-5.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-16 19:33:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plone",
    "github_project": "plone.app.event",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "plone.app.event"
}
        
Elapsed time: 0.24363s