[Calypso] [PATCH 3/3] Add is-addressbook and is-calendar settings.

Guido Günther agx at sigxcpu.org
Sat Apr 9 15:46:34 PDT 2016


On Sat, Apr 09, 2016 at 06:09:43PM +0000, Jelmer Vernooij wrote:
> From: Jelmer Vernooij <jelmer at jelmer.uk>
> 
> This is necessary acal (for which every collection is either an address
> book or a calendar).
> 
> Both settings default to True (current behaviour).

LGTM and passes our minimal caldav-tester suite.
 -- Guido

> 
> 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
> Calypso at keithp.com
> http://keithp.com/mailman/listinfo/calypso


More information about the Calypso mailing list