[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