From: Jelmer Vernooij <[email protected]> This is necessary acal (for which every collection is either an address book or a calendar).
Both settings default to True (current behaviour). Based on patches by chrysn. --- README | 12 ++++++++++-- calypso/webdav.py | 14 ++++++++++++++ calypso/xmlutils.py | 10 ++++++---- collection-config | 7 +++++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/README b/README index 11a8c23..c26fd6f 100644 --- a/README +++ b/README @@ -47,13 +47,21 @@ To add a new database: $ mkdir -p ~/.config/calypso/calendars/private/test $ cd ~/.config/calypso/calendars/private/test $ git init -$ git commit --allow-empty -m'initialize new calendar' +$ cat > .calypso-collection << EOF +[collection] +is-calendar = 1 +EOF +$ git add .calypso-collection +$ git commit -m'initialize new calendar' The new calendar should now be visible as https://USER:PASSWORD@localhost:5233/private/test. You can add files to the directory at any time; calypso will check the directory mtime at each operation and update its internal state from -that on disk automatically when the directory changes. Importing files +that on disk automatically when the directory changes. + +Importing files +--------------- Given a set of files with VCALENDAR or VCARD entries, you can import them with: diff --git a/calypso/webdav.py b/calypso/webdav.py index 4ed095c..186bc00 100644 --- a/calypso/webdav.py +++ b/calypso/webdav.py @@ -612,3 +612,17 @@ class Collection(object): @property def length(self): return "%d" % len(self.text) + + @property + def is_addressbook(self): + try: + return self.metadata.getboolean('collection', 'is-addressbook') + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError, ValueError): + return True + + @property + def is_calendar(self): + try: + return self.metadata.getboolean('collection', 'is-calendar') + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError, ValueError): + return True diff --git a/calypso/xmlutils.py b/calypso/xmlutils.py index e705588..7c0f430 100644 --- a/calypso/xmlutils.py +++ b/calypso/xmlutils.py @@ -159,10 +159,12 @@ def propfind(path, xml_request, collection, depth, context): for tag in props: element = ET.Element(tag) if tag == _tag("D", "resourcetype") and is_collection: - tag = ET.Element(_tag("C", "calendar")) - element.append(tag) - tag = ET.Element(_tag("A", "addressbook")) - element.append(tag) + if collection.is_calendar: + tag = ET.Element(_tag("C", "calendar")) + element.append(tag) + if collection.is_addressbook: + tag = ET.Element(_tag("A", "addressbook")) + element.append(tag) tag = ET.Element(_tag("D", "collection")) element.append(tag) elif tag == _tag("D", "owner"): diff --git a/collection-config b/collection-config index 4ce34a4..c1a2e24 100644 --- a/collection-config +++ b/collection-config @@ -11,4 +11,11 @@ displayname = My Calendar # WebDAV properties. Defaults to the collection's path. description = Collection of all my personal dates. +# Advertise this collection as a calendar. If this setting is absent, +# it defaults to True. +is-calendar = 1 +# Advertise this collection as an address book. Behaves in analogy to +# is-calendar. +is-addressbook = 0 + # vim:ft=cfg -- 2.8.0.rc3 _______________________________________________ Calypso mailing list [email protected] http://keithp.com/mailman/listinfo/calypso
