[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