[CalendarServer-changes] [10091] CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/ datastore/sql.py
source_changes at macosforge.org
source_changes at macosforge.org
Tue Nov 27 15:18:39 PST 2012
Revision: 10091
http://trac.calendarserver.org//changeset/10091
Author: gaya at apple.com
Date: 2012-11-27 15:18:39 -0800 (Tue, 27 Nov 2012)
Log Message:
-----------
fix shared group revisions
Modified Paths:
--------------
CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py
Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py 2012-11-27 21:53:28 UTC (rev 10090)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py 2012-11-27 23:18:39 UTC (rev 10091)
@@ -365,7 +365,7 @@
def remove(self):
if self._addressbook.owned():
- if self._kind == _ABO_KIND_GROUP:
+ if self._kind == _ABO_KIND_GROUP: # optimization
# need to invalidate queryCacher of sharee's home
queryCacher = self._txn._queryCacher
if queryCacher:
@@ -401,7 +401,9 @@
yield groupObject.updateDatabase(groupComponent, removingObject=removingObject)
if ownerGroup:
- pass # convert delete in shared group to remove of member only part 2
+ # convert delete in shared group to remove of member only part 2
+ ownerAddressBook = yield self.ownerAddressBook()
+ self._changeAddressBookRevision(ownerAddressBook)
else:
yield super(AddressBookObject, self).remove()
self._kind = None
@@ -548,24 +550,40 @@
@inlineCallbacks
+ def _changeAddressBookRevision(self, addressbook, inserting=False):
+ if inserting:
+ yield addressbook._insertRevision(self._name)
+ else:
+ yield addressbook._updateRevision(self._name)
+
+ yield addressbook.notifyChanged()
+
+
+ @inlineCallbacks
def setComponent(self, component, inserting=False):
validateAddressBookComponent(self, self._addressbook, component, inserting)
-
yield self.updateDatabase(component, inserting=inserting)
+ yield self._changeAddressBookRevision(self._addressbook, inserting)
- ownerAddressBook = yield self.ownerAddressBook()
+ if self._addressbook.owned():
+ # update revision table of the sharee group address book
+ #
+ # Alternatively, we could create an address book object for this group
+ # and update that.
+ if self._kind == _ABO_KIND_GROUP: # optimization
+ for shareeAddressBook in (yield self.asShared()):
+ yield self._changeAddressBookRevision(shareeAddressBook, inserting)
- if inserting:
- yield ownerAddressBook._insertRevision(self._name)
+ # one is enough because all have the same resourceID
+ break
else:
- yield ownerAddressBook._updateRevision(self._name)
+ if self._addressbook._resourceID != self._ownerAddressBookResourceID: # this is a group shared address book
+ # update owner address book
+ ownerAddressBook = yield self.ownerAddressBook()
+ yield self._changeAddressBookRevision(ownerAddressBook, inserting)
- yield ownerAddressBook.notifyChanged()
- #FIXME: handle case where owner changes group. Also check remove()
-
-
@inlineCallbacks
def _ownerGroupAndAddressBook(self):
"""
@@ -586,6 +604,7 @@
returnValue((ownerGroup, ownerAddressBook))
+
@inlineCallbacks
def ownerGroup(self):
if not hasattr(self, "_ownerGroup"):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20121127/506e05bc/attachment.html>
More information about the calendarserver-changes
mailing list