#10886: plone.app.event - new eventtype for plone
----------------------------+-----------------------------------------------
 Reporter:  thet            |       Owner:  thet                  
     Type:  PLIP            |      Status:  new                   
 Priority:  minor           |   Milestone:  4.1                   
Component:  Infrastructure  |    Keywords:  event, recurring, date
----------------------------+-----------------------------------------------

Old description:

> '''Proposer:''' Johannes Raggam[[BR]]
> '''Seconder:''' None as yet[[BR]]
> [[BR]]
> Please note: this PLIP is an update of
> http://dev.plone.org/plone/ticket/9302
> [[BR]]
> == Motivation ==
> The current event type is in need of a major overhaul. The datetime
> widgets are hard to use, and makes it hard to enter such things as all
> day events. Recurrence is a recurring feature request, that has been
> solved many times.
>
> == Proposal & Implementation ==
> At the cathedral sprint in cologne a new package was created named
> plone.app.event [1]. It is based on the work from vs.event [2].
>
> The intention of plone.app.event is to provide an improved event type for
> plone. It should be a replacement of ATEvent. All event specific code is
> peeled out of ATContentTypes and refactored into plone.app.event, as it
> was done with plone's folder implementation (plone.folder and
> plone.app.folder). Benefits of separating the most complex ATContentType
> from ATCT could be:
>     * Easier maintaining of the event content type
>     * Easier to reuse generic calendaring tools (Generalizing them
> eventually in plone.event)
>     * Possibility to use plone.app.event also as a basis for a dexterity
> event type implementation
>
> Features of plone.app.event:
>     * drop-in replacement for ATEvent
>     * new calendar widget with full internationalization and localization
> support (collective.calendarwidget [3])
>     * support for whole day events
>     * support for events without end dates
>     * proper export of whole day events to iCal
>     * recurrence
>
> plone.app.event provides an ATEvent content type which implements
> IATEvent. IATEvent should be based on a more generic IEvent interface.
> This should then also be the basis for eventtype implementations based on
> dexterity.
>
> The implementation of the recurrence support started at the cathedral
> sprint could be done as follows:
> Products.DateRecurringIndex is a drop-in replacement for the standard
> DateIndex. When the event type is being indexed, it should calculate
> every occurrence for the start-date and the end-date based on recurrence
> definition rules and write it to the start- respectively the end-index.
> The original version has support for recurrence rules based on time-
> deltas. The improved version of Products.DateRecurringIndex [4] has
> additional support for dateutil's recurrence rules. Dateutils[5] rrule is
> a complete and fast implementation of the recurrence rules defined in the
> iCalendar RFC [6].
> The event type should make use of a recurrence field and a recurrence
> widget, possibly based on archetypes.recurringdate [7]. In combination
> with dateutil, the power of the recurrence support is more or less just a
> question of the recurrence widget.
>
> The pytz library for timezone conversation related things should be used
> where possible and appropriate.
>
> Some architectural decisions aspects need still to be discussed.
>

> == Deliverables ==
>
>     * Products.ATContentTypes branch without it's event related code
>     * collective.calendarwidget for a date selecting widget
>     * plone.app.event for the content type and all event related code
> remaining
>     * tests, documentation, localization of course
>
> For recurrence support:
>     * Products.DateRecurringIndex with dateutil support
>     * An updated Calendar portlet that uses the recurrence index (best
> place for it: plone.app.event).
>     * Updated content views.
>     * archetypes.recurringdate for a recurrence field which stores
> recurrence definitions or datetuils.rrule instances itself and widget
> which provides fields to define the recurrence definitions
>     * a migration step to re-index all events, using
> Products.DateRecurringIndex
>

> == Risks ==
>
>     * plone.app.event and Products.ATContentTypes must be synchronized
> sometime
>     * Event related code must be removed from Products.ATContentTypes
> sometime
>     * Third party packages which rely on ATCT internals may break
> (although ATCT should still provide BBB imports from plone.app.event)
>

> == Participants ==
>
>     * Johannes Raggam - Products.DateRecurringIndex, recurrence related
> work
>     * Vincent Fretin - collective.calendarwidget
>
> Unconfirmed, but cologne plone.app.event sprint participants:
>     * Andreas Jung - vs.event refactoring to plone.app.event
>     * Tom Gross, Rodrigo Ristow - plone.app.event,
> Products.ATContentTypes
>

> == Progress ==
>     * collective.calendarwidget: almost done
>     * plone.app.event: Half Way. Currently based on:
> Products.ATContentTypes 2.0b10
>     * Products.DateRecurringIndex: First working version done at
> cathedral sprint [4]. Currently under refactoring [8]
>     * archetypes.recurringdate: Was started by "deo" at ploneconf2009. It
> has to be refactored to fit into plone.app.event,
> collective.calendarwidget and Products.DateRecurringIndex
>

> == Links ==
> [1] http://pypi.python.org/pypi/vs.event
>
> [2] https://svn.plone.org/svn/plone/plone.app.event
>
> [3] https://svn.plone.org/svn/collective/collective.calendarwidget
>
> [4] https://svn.plone.org/svn/collective/Product
> s.DateRecurringIndex/branches/DateRecurringIndex2-dateutils
>
> [5] http://labix.org/python-dateutil
>
> [6] http://www.ietf.org/rfc/rfc2445.txt
>
> [7]
> https://svn.plone.org/svn/archetypes/MoreFieldsAndWidgets/archetypes.recurringdate/
>
> [8] http://github.com/thet/Products.DateRecurringIndex

New description:

 '''Proposer:''' Johannes Raggam[[BR]]
 '''Seconder:''' None as yet[[BR]]
 [[BR]]
 PLIP ready for review. For an updated information what was done, please
 see:
 https://svn.plone.org/svn/plone/buildouts/plone-
 coredev/branches/4.1/plips/plip10886-event-improvements.txt

 Please note: this PLIP is an update of
 http://dev.plone.org/plone/ticket/9302

 [[BR]]
 == Motivation ==
 The current event type is in need of a major overhaul. The datetime
 widgets are hard to use, and makes it hard to enter such things as all day
 events. Recurrence is a recurring feature request, that has been solved
 many times.

 == Proposal & Implementation ==
 At the cathedral sprint in cologne a new package was created named
 plone.app.event [1]. It is based on the work from vs.event [2].

 The intention of plone.app.event is to provide an improved event type for
 plone. It should be a replacement of ATEvent. All event specific code is
 peeled out of ATContentTypes and refactored into plone.app.event, as it
 was done with plone's folder implementation (plone.folder and
 plone.app.folder). Benefits of separating the most complex ATContentType
 from ATCT could be:
     * Easier maintaining of the event content type
     * Easier to reuse generic calendaring tools (Generalizing them
 eventually in plone.event)
     * Possibility to use plone.app.event also as a basis for a dexterity
 event type implementation

 Features of plone.app.event:
     * drop-in replacement for ATEvent
     * new calendar widget with full internationalization and localization
 support (collective.calendarwidget [3])
     * support for whole day events
     * support for events without end dates
     * proper export of whole day events to iCal
     * recurrence

 plone.app.event provides an ATEvent content type which implements
 IATEvent. IATEvent should be based on a more generic IEvent interface.
 This should then also be the basis for eventtype implementations based on
 dexterity.

 The implementation of the recurrence support started at the cathedral
 sprint could be done as follows:
 Products.DateRecurringIndex is a drop-in replacement for the standard
 DateIndex. When the event type is being indexed, it should calculate every
 occurrence for the start-date and the end-date based on recurrence
 definition rules and write it to the start- respectively the end-index.
 The original version has support for recurrence rules based on time-
 deltas. The improved version of Products.DateRecurringIndex [4] has
 additional support for dateutil's recurrence rules. Dateutils[5] rrule is
 a complete and fast implementation of the recurrence rules defined in the
 iCalendar RFC [6].
 The event type should make use of a recurrence field and a recurrence
 widget, possibly based on archetypes.recurringdate [7]. In combination
 with dateutil, the power of the recurrence support is more or less just a
 question of the recurrence widget.

 The pytz library for timezone conversation related things should be used
 where possible and appropriate.

 Some architectural decisions aspects need still to be discussed.


 == Deliverables ==

     * Products.ATContentTypes branch without it's event related code
     * collective.calendarwidget for a date selecting widget
     * plone.app.event for the content type and all event related code
 remaining
     * tests, documentation, localization of course

 For recurrence support:
     * Products.DateRecurringIndex with dateutil support
     * An updated Calendar portlet that uses the recurrence index (best
 place for it: plone.app.event).
     * Updated content views.
     * archetypes.recurringdate for a recurrence field which stores
 recurrence definitions or datetuils.rrule instances itself and widget
 which provides fields to define the recurrence definitions
     * a migration step to re-index all events, using
 Products.DateRecurringIndex


 == Risks ==

     * plone.app.event and Products.ATContentTypes must be synchronized
 sometime
     * Event related code must be removed from Products.ATContentTypes
 sometime
     * Third party packages which rely on ATCT internals may break
 (although ATCT should still provide BBB imports from plone.app.event)


 == Participants ==

     * Johannes Raggam - Products.DateRecurringIndex, recurrence related
 work
     * Vincent Fretin - collective.calendarwidget

 Unconfirmed, but cologne plone.app.event sprint participants:
     * Andreas Jung - vs.event refactoring to plone.app.event
     * Tom Gross, Rodrigo Ristow - plone.app.event, Products.ATContentTypes


 == Progress ==
     * collective.calendarwidget: almost done
     * plone.app.event: Half Way. Currently based on:
 Products.ATContentTypes 2.0b10
     * Products.DateRecurringIndex: First working version done at cathedral
 sprint [4]. Currently under refactoring [8]
     * archetypes.recurringdate: Was started by "deo" at ploneconf2009. It
 has to be refactored to fit into plone.app.event,
 collective.calendarwidget and Products.DateRecurringIndex


 == Links ==
 [1] http://pypi.python.org/pypi/vs.event

 [2] https://svn.plone.org/svn/plone/plone.app.event

 [3] https://svn.plone.org/svn/collective/collective.calendarwidget

 [4] https://svn.plone.org/svn/collective/Product
 s.DateRecurringIndex/branches/DateRecurringIndex2-dateutils

 [5] http://labix.org/python-dateutil

 [6] http://www.ietf.org/rfc/rfc2445.txt

 [7]
 
https://svn.plone.org/svn/archetypes/MoreFieldsAndWidgets/archetypes.recurringdate/

 [8] http://github.com/thet/Products.DateRecurringIndex

--

Comment(by thet):

 PLIP ready for review. For an updated information what was done, please
 see:
 https://svn.plone.org/svn/plone/buildouts/plone-
 coredev/branches/4.1/plips/plip10886-event-improvements.txt

-- 
Ticket URL: <http://dev.plone.org/plone/ticket/10886#comment:19>
Plone <http://plone.org>
Plone Content Management System
_______________________________________________
PLIP-Advisories mailing list
plip-advisor...@lists.plone.org
http://lists.plone.org/mailman/listinfo/plip-advisories

Reply via email to