[CalendarServer-changes] [10017] CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/ datastore/sql.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Nov 9 12:27:14 PST 2012
Revision: 10017
http://trac.calendarserver.org//changeset/10017
Author: gaya at apple.com
Date: 2012-11-09 12:27:14 -0800 (Fri, 09 Nov 2012)
Log Message:
-----------
yield when calling ABO.updateDatabase
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-09 20:26:18 UTC (rev 10016)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py 2012-11-09 20:27:14 UTC (rev 10017)
@@ -110,22 +110,22 @@
yield Delete(
From=ab,
- Where=ab.ADDRESSBOOK_HOME_RESOURCE_ID == self._resourceID
+ Where=ab.ADDRESSBOOK_HOME_RESOURCE_ID == self._resourceID,
).on(self._txn)
yield Delete(
From=aor,
- Where=aor.ADDRESSBOOK_HOME_RESOURCE_ID == self._resourceID
+ Where=aor.ADDRESSBOOK_HOME_RESOURCE_ID == self._resourceID,
).on(self._txn)
yield Delete(
From=ah,
- Where=ah.RESOURCE_ID == self._resourceID
+ Where=ah.RESOURCE_ID == self._resourceID,
).on(self._txn)
yield Delete(
From=rp,
- Where=rp.RESOURCE_ID == self._resourceID
+ Where=rp.RESOURCE_ID == self._resourceID,
).on(self._txn)
yield self._cacher.delete(str(self._ownerUID))
@@ -280,18 +280,17 @@
"""
aboMembers = schema.ABO_MEMBERS
return Select([aboMembers.MEMBER_ID], From=aboMembers,
- Where=aboMembers.GROUP_ID.In(Parameter("groupIDs", len(groupIDs)))
+ Where=aboMembers.GROUP_ID.In(Parameter("groupIDs", len(groupIDs))),
)
@inlineCallbacks
- def _addressBookObjectIDs(self):
+ def _allowedAddressBookObjectIDs(self):
"""
Get all addressbookobject resource IDs in this address book
-
- TODO: optimize
"""
- # TODO: if shared, self is a member
- # allMemberIDs = set() if self.owned() else set([self._resourceID])
+ # TODO: cache in attr
+ # TODO: optimize
+
allMemberIDs = set()
examinedIDs = set()
remainingIDs = set([self._resourceID])
@@ -300,7 +299,7 @@
allMemberIDs |= set([memberRow[0] for memberRow in memberRows])
examinedIDs |= remainingIDs
remainingIDs = allMemberIDs - examinedIDs
- print("_addressBookObjectIDs:self=%s, examinedIDs=%s, remainingIDs=%s, allMemberIDs=%s" % (self, examinedIDs, remainingIDs, allMemberIDs,))
+ print("_allowedAddressBookObjectIDs:self=%s, examinedIDs=%s, remainingIDs=%s, allMemberIDs=%s" % (self, examinedIDs, remainingIDs, allMemberIDs,))
returnValue(tuple(allMemberIDs))
@@ -319,7 +318,7 @@
@inlineCallbacks
def listObjectResources(self):
if self._objectNames is None:
- memberIDs = yield self._addressBookObjectIDs()
+ memberIDs = yield self._allowedAddressBookObjectIDs()
rows = (yield self._objectResourceNamesWithResourceIDsQuery(memberIDs).on(
self._txn, resourceIDs=memberIDs)) if memberIDs else []
self._objectNames = sorted([row[0] for row in rows])
@@ -329,7 +328,7 @@
@inlineCallbacks
def countObjectResources(self):
- returnValue(len((yield self._addressBookObjectIDs())))
+ returnValue(len((yield self._allowedAddressBookObjectIDs())))
class AddressBookObject(CommonObjectResource, AddressBookSharingMixIn):
@@ -388,7 +387,7 @@
Where=(aboMembers.MEMBER_ID == self._resourceID).And(
aboMembers.GROUP_ID != ownerAddressBook._resourceID),
).on(self._txn)
- groupIDs = [groupID[0] for groupID in groupIDRows]
+ groupIDs = [groupIDRow[0] for groupIDRow in groupIDRows]
print("remove:self=%s, groupIDs=%s" % (self, groupIDs,))
member = "urn:uuid:" + self._uid
@@ -397,8 +396,9 @@
groupComponent = yield groupObject.component()
if member in groupComponent.resourceMembers():
groupComponent.removeProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", member))
- groupObject.updateDatabase(groupComponent)
+ yield groupObject.updateDatabase(groupComponent)
+ print("remove:%s, return ownerGroup=%s, ownerAddressBook=%s" % (self, ownerGroup, ownerAddressBook,))
returnValue(None)
# delete members table row for this object
@@ -435,7 +435,7 @@
return Select(
cls._allColumns, From=obj,
Where=(column == Parameter(paramName)).And(
- obj.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs))))
+ obj.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs)))),
)
@@ -454,7 +454,7 @@
obj = cls._objectSchema
return Select(
cls._allColumns, From=obj,
- Where=(obj.RESOURCE_ID == Parameter("resourceID")))
+ Where=obj.RESOURCE_ID == Parameter("resourceID"),)
@inlineCallbacks
@@ -467,7 +467,7 @@
@return: L{self} if object exists in the DB, else C{None}
"""
- memberIDs = yield self._addressbook._addressBookObjectIDs()
+ memberIDs = yield self._addressbook._allowedAddressBookObjectIDs()
if self._name:
rows = (yield self._allWithResourceIDAndName(memberIDs).on(
self._txn, name=self._name,
@@ -531,13 +531,13 @@
def _allColumnsWithResourceIDsQuery(cls, resourceIDs): #@NoSelf
obj = cls._objectSchema
return Select(cls._allColumns, From=obj,
- Where=obj.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs))))
+ Where=obj.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs))),)
@classmethod
@inlineCallbacks
def _allColumnsWithParent(cls, parent): #@NoSelf
- memberIDs = yield parent._addressBookObjectIDs()
+ memberIDs = yield parent._allowedAddressBookObjectIDs()
print("_allColumnsWithParent:cls=%s, parent=%s, memberIDs=%s" % (cls, parent, memberIDs,))
rows = (yield cls._allColumnsWithResourceIDsQuery(memberIDs).on(
@@ -552,13 +552,13 @@
obj = cls._objectSchema
return Select(cls._allColumns, From=obj,
Where=(obj.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs))).And(
- obj.RESOURCE_NAME.In(Parameter("names", len(names))))))
+ obj.RESOURCE_NAME.In(Parameter("names", len(names))))),)
@classmethod
@inlineCallbacks
def _allColumnsWithParentAndNames(cls, parent, names): #@NoSelf
- memberIDs = yield parent._addressBookObjectIDs()
+ memberIDs = yield parent._allowedAddressBookObjectIDs()
rows = (yield cls._allColumnsWithResourceIDsAndNamesQuery(memberIDs, names).on(
parent._txn, resourceIDs=memberIDs, names=names)) if memberIDs else []
@@ -667,7 +667,7 @@
memberRow = yield Select([abo.RESOURCE_ID],
From=abo,
Where=((abo.ADDRESSBOOK_RESOURCE_ID == self._ownerAddressBookResourceID)
- ).And(abo.VCARD_UID == memberUID)).on(self._txn)
+ ).And(abo.VCARD_UID == memberUID),).on(self._txn)
if memberRow:
memberIDs.append(memberRow[0][0])
else:
@@ -676,7 +676,7 @@
#in shared group, all members must be inside the shared group
if ownerGroup:
if len(resourceMembers) != len(memberIDs) or \
- set(memberIDs) - set((yield self._addressbook._addressBookObjectIDs())):
+ set(memberIDs) - set((yield self._addressbook._allowedAddressBookObjectIDs())):
raise GroupWithUnsharedAddressNotAllowedError
if inserting:
@@ -697,7 +697,7 @@
member = "urn:uuid:" + self._uid
if not member in ownerGroupComponent.resourceMembers():
ownerGroupComponent.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", member))
- ownerGroup.updateDatabase(ownerGroupComponent)
+ yield ownerGroup.updateDatabase(ownerGroupComponent)
# add row on this address book group table
print("updateDatabase1:self=%s Insert(aboMembers.GROUP_ID:%s, aboMembers.ADDRESSBOOK_ID:%s, aboMembers.MEMBER_ID:%s" % (
@@ -709,18 +709,18 @@
).on(self._txn)
# delete foreign members table row for this object
- groupIDs = yield Delete(
+ groupIDRows = yield Delete(
aboForeignMembers,
Where=aboForeignMembers.MEMBER_ADDRESS == "urn:uuid:" + self._uid,
Return=aboForeignMembers.GROUP_ID
).on(self._txn)
# add to member table row by resourceID
- for groupID in groupIDs:
+ for groupID in [groupIDRow[0] for groupIDRow in groupIDRows]:
print("updateDatabase2:self=%s Insert(aboMembers.GROUP_ID:%s, aboMembers.ADDRESSBOOK_ID:%s, aboMembers.MEMBER_ID:%s" % (
- self, groupID[0], self._ownerAddressBookResourceID, self._resourceID))
+ self, groupID, self._ownerAddressBookResourceID, self._resourceID))
yield Insert(
- {aboMembers.GROUP_ID: groupID[0],
+ {aboMembers.GROUP_ID: groupID,
aboMembers.ADDRESSBOOK_ID: self._ownerAddressBookResourceID,
aboMembers.MEMBER_ID: self._resourceID, }
).on(self._txn)
@@ -740,7 +740,7 @@
#get current members
currentMemberRows = yield Select([aboMembers.MEMBER_ID],
From=aboMembers,
- Where=(aboMembers.GROUP_ID == self._resourceID)).on(self._txn)
+ Where=aboMembers.GROUP_ID == self._resourceID,).on(self._txn)
currentMemberIDs = [currentMemberRow[0] for currentMemberRow in currentMemberRows]
memberIDsToDelete = set(currentMemberIDs) - set(memberIDs)
@@ -748,6 +748,8 @@
print("updateDatabase3:self=%s component.resourceMembers()=%s, currentMemberIDs:%s, memberIDsToAdd:%s, memberIDsToDelete:%s" % (self, component.resourceMembers(), currentMemberIDs, memberIDsToAdd, memberIDsToDelete,))
for memberIDToDelete in memberIDsToDelete:
+ print("updateDatabase3.1:Delete((aboMembers.GROUP_ID == self._resourceID=%s).And( \
+ aboMembers.MEMBER_ID == memberIDToDelete=%s)" % (self._resourceID, memberIDToDelete,))
yield Delete(
aboMembers,
Where=((aboMembers.GROUP_ID == self._resourceID).And(
@@ -755,7 +757,7 @@
).on(self._txn)
for memberIDToAdd in memberIDsToAdd:
- print("updateDatabase3.1:self=%s Insert(aboMembers.GROUP_ID:%s, aboMembers.ADDRESSBOOK_ID:%s, aboMembers.MEMBER_ID:%s" % (
+ print("updateDatabase3.2:self=%s Insert(aboMembers.GROUP_ID:%s, aboMembers.ADDRESSBOOK_ID:%s, aboMembers.MEMBER_ID:%s" % (
self, self._resourceID, self._ownerAddressBookResourceID, memberIDToAdd))
yield Insert(
{aboMembers.GROUP_ID: self._resourceID,
@@ -766,7 +768,7 @@
#get current foreign members
currentForeignMemberRows = yield Select([aboForeignMembers.MEMBER_ADDRESS],
From=aboForeignMembers,
- Where=(aboForeignMembers.GROUP_ID == self._resourceID)).on(self._txn)
+ Where=aboForeignMembers.GROUP_ID == self._resourceID,).on(self._txn)
currentForeignMemberAddrs = [currentForeignMemberRow[0] for currentForeignMemberRow in currentForeignMemberRows]
foreignMemberAddrsToDelete = set(currentForeignMemberAddrs) - set(foreignMemberAddrs)
@@ -775,6 +777,8 @@
(self, component.resourceMembers(), currentForeignMemberAddrs, foreignMemberAddrsToAdd, foreignMemberAddrsToDelete,))
for foreignMemberAddrToDelete in foreignMemberAddrsToDelete:
+ print("updateDatabase3.1:Delete((aboForeignMembers.GROUP_ID == self._resourceID=%s).And( \
+ aboForeignMembers.MEMBER_ADDRESS == memberIDToDelete=%s)" % (self._resourceID, foreignMemberAddrToDelete,))
yield Delete(
aboForeignMembers,
Where=((aboForeignMembers.GROUP_ID == self._resourceID).And(
@@ -782,7 +786,7 @@
).on(self._txn)
for foreignMemberAddrToAdd in foreignMemberAddrsToAdd:
- print("updateDatabase4:self=%s Insert(foreignMemberAddrToAdd.GROUP_ID:%s, foreignMemberAddrToAdd.ADDRESSBOOK_ID:%s, foreignMemberAddrToAdd.MEMBER_ID:%s" % (
+ print("updateDatabase4.2:self=%s Insert(foreignMemberAddrToAdd.GROUP_ID:%s, foreignMemberAddrToAdd.ADDRESSBOOK_ID:%s, foreignMemberAddrToAdd.MEMBER_ID:%s" % (
self, self._resourceID, self._ownerAddressBookResourceID, foreignMemberAddrToAdd))
yield Insert(
{aboForeignMembers.GROUP_ID: self._resourceID,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20121109/3d0f0d12/attachment-0001.html>
More information about the calendarserver-changes
mailing list