[Framework-Team] plone.app.event ical importer in core

johannes raggam raggam-nl at adm.at
Thu Mar 28 19:17:30 UTC 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 03/28/2013 07:23 PM, David Glick (Plone) wrote:
> On 3/15/13 2:33 AM, johannes raggam wrote:
>> Any comments and thoughts?
>> 
>> 
> I think this is fine. But maybe we should brainstorm about a more 
> generic inbound syndication framework. I say this because some of
> the above features are remind me of parts of
> collective.salesforce.content which imports content based on
> records in Salesforce.com.

brainstorming about a generic inbound syndication feature would be a
good thing! but let's see this ical import feature as a playground for
this...
i had to implement it in some way because of the client's needs and
now it's half way done (some TODOs left, which will be fixed soon):
https://github.com/plone/plone.app.event/blob/master/plone/app/event/ical/importer.py

even though it's working quite good, i would say it's experimental.
e.g. icalendar and plone.app.event are not prepared to handle MS
outlook ics exports well, since outlook doesn't use OlsonDB timezone
identifiers (AFAIK!). some other issues may also arise, depending on
different ics files. however, so far i'm happy with it.

regarding the implementation:
- - i registered an action which enables/disables the ical import
feature by adding/removing an interface to/from an IFolder context.
- - the ical settings form is registered as a object tab. it handles
file uploads as well as URLs to ics files.


TODO:

- - storing the settings in an annotationstorage on the context.

- - implementing the synchronisation strategies (none, keep mine, keep
theirs, keep newer).

- - improving select field for the type, which is going to be created.


QUESTIONS:

- - regarding the synchronisation strategies: i need to compare the
VEVENT uid with the one of possibly already imported events and then
decide based on the sync settings what to do. to compare the VEVENT
uid, i need to store it on the object and i'd also need a catalog
index for it, so that i can search for it. but adding a catalog index
for the ical import feature is something i don't feel comfortable
with. should i store the ical UID in the objects id instead? i think
that would even be appropriate, appart from the ugly UID based URLS.

- - regarding the type select field: does anyone know how to ask the FTI
for types which implement a specific interface?
plone.event.interfaces.IEvent in this case. i didn't find a way other
than temporarily creating an object and asking it if it implements the
interface.
i would cache this list after creating, but this way just feels quite
goofy. however, it didn't work anyways (couldn't find a way to create
a temporary folderish object, where i could create the types objects in).


best,
johannes



- -- 
programmatic  web development
di(fh) johannes raggam / thet
python plone zope development
mail: office at programmatic.pro
web:  http://programmatic.pro
      http://bluedynamics.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iEYEARECAAYFAlFUl0oACgkQW4mNMQxDgAeJQwCcDbFV8UN2fs/ojQy0InBLTkhg
vwUAoOREJmy9/+/zTkbEgd4Xad0qmVxw
=T2q8
-----END PGP SIGNATURE-----


More information about the Framework-Team mailing list