[Calypso] [PATCH] Remove DURATION if both DURATION and DTEND are present on a VEVENT.

Jelmer Vernooij jelmer at jelmer.uk
Wed Jan 27 14:01:15 PST 2016


From: Jelmer Vernooij <jelmer at jelmer.uk>

See RFC5545, section 3.6.1.
---
 calypso/webdav.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/calypso/webdav.py b/calypso/webdav.py
index f6b84ab..0acfdf0 100644
--- a/calypso/webdav.py
+++ b/calypso/webdav.py
@@ -58,6 +58,14 @@ def find_vobject_value(vobject, name):
             return value
     return None
 
+
+def sanitize_vevent(ve):
+    # Check for events with both dtend and duration entries and
+    # delete the duration one
+    if ve.contents.has_key('dtend') and ve.contents.has_key('duration'):
+        del ve.contents['duration']
+
+
 class Item(object):
 
     """Internal item. Wraps a vObject"""
@@ -514,10 +522,7 @@ class Collection(object):
 
                     events = new_ics.vevent_list
                     for ve in events:
-                        # Check for events with both dtstart and duration entries and
-                        # delete the duration one
-                        if ve.contents.has_key('dtstart') and ve.contents.has_key('duration'):
-                            del ve.contents['duration']
+                        sanitize_vevent(ve)
                         new_ics.vevent_list = [ve]
                         new_item = Item(new_ics.serialize().decode('utf-8'), None, path)
                         self.import_item(new_item, path)
@@ -528,7 +533,7 @@ class Collection(object):
         except Exception, ex:
             self.log.exception("Failed to import: %s", path)
             return False
-        
+
     def write(self, headers=None, items=None):
         return True
 
-- 
2.7.0



More information about the Calypso mailing list