[CalendarServer-changes] [11972] CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/ propertystore

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:19:03 PDT 2014


Revision: 11972
          http://trac.calendarserver.org//changeset/11972
Author:   cdaboo at apple.com
Date:     2013-11-19 12:47:47 -0800 (Tue, 19 Nov 2013)
Log Message:
-----------
Fix issue seen when migrating a user with a shared calendar and a shadowed timezone property.

Modified Paths:
--------------
    CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/base.py
    CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/test/base.py

Modified: CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/base.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/base.py	2013-11-19 16:58:13 UTC (rev 11971)
+++ CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/base.py	2013-11-19 20:47:47 UTC (rev 11972)
@@ -214,7 +214,13 @@
 
     def __delitem__(self, key):
         # Handle per-user behavior
-        if self.isGlobalProperty(key):
+        if self.isShadowableProperty(key):
+            try:
+                self._delitem_uid(key, self._perUser)
+            except KeyError:
+                # It is OK for shadowable delete to fail
+                pass
+        elif self.isGlobalProperty(key):
             self._delitem_uid(key, self._defaultUser)
         else:
             self._delitem_uid(key, self._perUser)

Modified: CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/test/base.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/test/base.py	2013-11-19 16:58:13 UTC (rev 11971)
+++ CalendarServer/branches/release/CalendarServer-5.2-dev/txdav/base/propertystore/test/base.py	2013-11-19 20:47:47 UTC (rev 11972)
@@ -206,6 +206,41 @@
 
 
     @inlineCallbacks
+    def test_peruserShadow_delete(self):
+        """
+        Delete a shadowable property that has not been overridden by the sharee.
+        """
+
+        name = propertyName("shadow")
+
+        self.propertyStore1.setSpecialProperties((name,), ())
+        self.propertyStore2.setSpecialProperties((name,), ())
+
+        value1 = propertyValue("Hello, World1!")
+
+        self.propertyStore1[name] = value1
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+
+        del self.propertyStore2[name]
+        yield self._changed(self.propertyStore2)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+
+        del self.propertyStore1[name]
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), None)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.failIf(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+
+
+    @inlineCallbacks
     def test_peruser_global(self):
 
         name = propertyName("global")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/e7a98a70/attachment.html>


More information about the calendarserver-changes mailing list