[CalendarServer-changes] [12300] CalendarServer/branches/users/gaya/cleanrevisions/txdav/carddav/ datastore/sql.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:17:45 PDT 2014


Revision: 12300
          http://trac.calendarserver.org//changeset/12300
Author:   gaya at apple.com
Date:     2014-01-10 21:12:16 -0800 (Fri, 10 Jan 2014)
Log Message:
-----------
remove buggy changes in r11823

Revision Links:
--------------
    http://trac.calendarserver.org//changeset/11823

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/cleanrevisions/txdav/carddav/datastore/sql.py

Modified: CalendarServer/branches/users/gaya/cleanrevisions/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/cleanrevisions/txdav/carddav/datastore/sql.py	2014-01-11 01:54:51 UTC (rev 12299)
+++ CalendarServer/branches/users/gaya/cleanrevisions/txdav/carddav/datastore/sql.py	2014-01-11 05:12:16 UTC (rev 12300)
@@ -1840,25 +1840,22 @@
         if partiallyShared:
             groupIDsToRemoveFrom = groupIDs & readWriteObjectIDs
             groupIDs -= readWriteObjectIDs
+        else:
+            groupIDsToRemoveFrom = groupIDs
 
-            # add to member table rows marked removed
-            for groupIDToRemoveFrom in groupIDsToRemoveFrom:
-                yield self._insertMemberIDQuery.on(self._txn,
-                    groupID=groupIDToRemoveFrom,
-                    addressbookID=self._ownerAddressBookResourceID,
-                    memberID=self._resourceID,
-                    revision=self._syncTokenRevision,
-                    removed=True,
-                )
+        # add to member table rows marked removed
+        for groupIDToRemoveFrom in groupIDsToRemoveFrom:
+            yield self._insertMemberIDQuery.on(self._txn,
+                groupID=groupIDToRemoveFrom,
+                addressbookID=self._ownerAddressBookResourceID,
+                memberID=self._resourceID,
+                revision=self._syncTokenRevision,
+                removed=True,
+            )
+            if partiallyShared:
                 groupObject = yield self.addressbook().objectResourceWithID(groupIDToRemoveFrom)
                 yield self.addressbook()._updateRevision(groupObject.name())
 
-        else:
-            yield Delete(
-                aboMembers,
-                Where=aboMembers.MEMBER_ID == self._resourceID,
-            ).on(self._txn)
-
         # add to foreign member table row by member address (aboForeignMembers on address books)
         memberAddress = "urn:uuid:" + self._uid
         aboForeignMembers = schema.ABO_FOREIGN_MEMBERS
@@ -1870,23 +1867,17 @@
             ).on(self._txn)
 
         if self.kind() == _ABO_KIND_GROUP:
-            if partiallyShared:
-                # mark members as deleted
-                memberIDsToRemove = yield AddressBook.memberIDsWithGroupIDs(self._txn, [self._resourceID])
-                for memberIDToRemove in memberIDsToRemove:
-                    yield self._insertMemberIDQuery.on(
-                        self._txn,
-                        groupID=self._resourceID,
-                        addressbookID=self._ownerAddressBookResourceID,
-                        memberID=memberIDToRemove,
-                        revision=self._syncTokenRevision,
-                        removed=True,
-                    )
-            else:
-                yield Delete(
-                    aboMembers,
-                    Where=aboMembers.GROUP_ID == self._resourceID,
-                ).on(self._txn)
+            # mark members as deleted
+            memberIDsToRemove = yield AddressBook.memberIDsWithGroupIDs(self._txn, [self._resourceID])
+            for memberIDToRemove in memberIDsToRemove:
+                yield self._insertMemberIDQuery.on(
+                    self._txn,
+                    groupID=self._resourceID,
+                    addressbookID=self._ownerAddressBookResourceID,
+                    memberID=memberIDToRemove,
+                    revision=self._syncTokenRevision,
+                    removed=True,
+                )
 
         yield super(AddressBookObject, self).remove()
         self._kind = None
@@ -2276,15 +2267,6 @@
 
 
     @classmethod
-    def _deleteMembersWithGroupIDAndMemberIDsQuery(cls, groupID, memberIDs):
-        aboMembers = schema.ABO_MEMBERS
-        return Delete(
-            aboMembers,
-            Where=(aboMembers.GROUP_ID == groupID).And(
-                    aboMembers.MEMBER_ID.In(Parameter("memberIDs", len(memberIDs)))))
-
-
-    @classmethod
     def _deleteForeignMembersWithGroupIDAndMembeAddrsQuery(cls, groupID, memberAddrs):
         aboForeignMembers = schema.ABO_FOREIGN_MEMBERS
         return Delete(
@@ -2329,27 +2311,6 @@
         )
 
 
-    @classmethod
-    def _deleteMembersIDsThruRevisionQuery(cls, groupIDs, memberIDs):
-        """
-        DAL statement deletes rows with groupsIDs and memberIDs < revision
-
-        Note: Used after adding a member row in an owned address book, where only the last revision is needed.
-            Could be used after adding a member row to a partially shared address book if the
-            minimum valid revision is known.
-            "minimum valid revision" is the max of the bind revisions on a home over all
-            shared address books that have group binds.
-        """
-        aboMembers = schema.ABO_MEMBERS
-        return Delete(
-            aboMembers,
-            Where=(aboMembers.GROUP_ID.In(Parameter("groupIDs", len(groupIDs)))).And(
-                aboMembers.MEMBER_ID.In(Parameter("memberIDs", len(memberIDs)))).And(
-                    aboMembers.REVISION < Parameter("revision")
-                )
-        )
-
-
     @inlineCallbacks
     def updateDatabase(self, component, expand_until=None, reCreate=False, #@UnusedVariable
                        inserting=False):
@@ -2479,11 +2440,6 @@
                     removed=False,
                 )
 
-            # clean old revisions
-            if groupIDs and not partiallyShared:
-                yield self._deleteMembersIDsThruRevisionQuery(groupIDs, [self._resourceID]).on(
-                    self._txn, groupIDs=groupIDs, memberIDs=[self._resourceID], revision=self._syncTokenRevision)
-
         else:
             self._modified = (yield Update(
                 {abo.VCARD_TEXT: self._objectText,
@@ -2503,37 +2459,16 @@
             memberIDsToRemove = set(currentMemberIDs) - set(memberIDs)
             memberIDsToAdd = set(memberIDs) - set(currentMemberIDs)
 
-            for memberID in memberIDsToAdd:
+            for memberID in memberIDsToAdd | memberIDsToRemove:
                 yield self._insertMemberIDQuery.on(
                     self._txn,
                     groupID=self._resourceID,
                     addressbookID=self._ownerAddressBookResourceID,
                     memberID=memberID,
                     revision=self._syncTokenRevision,
-                    removed=False,
+                    removed=memberID in memberIDsToRemove,
                 )
 
-            if partiallyShared:
-                for memberID in memberIDsToRemove:
-                    yield self._insertMemberIDQuery.on(
-                        self._txn,
-                        groupID=self._resourceID,
-                        addressbookID=self._ownerAddressBookResourceID,
-                        memberID=memberID,
-                        revision=self._syncTokenRevision,
-                        removed=True,
-                    )
-            else:
-                # clean old revisions
-                if memberIDsToAdd:
-                    yield self._deleteMembersIDsThruRevisionQuery([self._resourceID], memberIDsToAdd).on(
-                        self._txn, groupIDs=[self._resourceID], memberIDs=memberIDsToAdd, revision=self._syncTokenRevision)
-
-                if memberIDsToRemove:
-                    yield self._deleteMembersWithGroupIDAndMemberIDsQuery(self._resourceID, memberIDsToRemove).on(
-                        self._txn, memberIDs=memberIDsToRemove
-                    )
-
             # get current foreign members
             currentForeignMemberRows = yield Select(
                 [aboForeignMembers.MEMBER_ADDRESS],
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/44d09aed/attachment.html>


More information about the calendarserver-changes mailing list