[CalendarServer-changes] [11959] CalendarServer/branches/users/sagen/groupcacher
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:24:58 PDT 2014
Revision: 11959
http://trac.calendarserver.org//changeset/11959
Author: gaya at apple.com
Date: 2013-11-15 21:15:04 -0800 (Fri, 15 Nov 2013)
Log Message:
-----------
Fix UUID issues in group cacher and delegates
Modified Paths:
--------------
CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py
CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py
CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py
Modified: CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py 2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py 2013-11-16 05:15:04 UTC (rev 11959)
@@ -22,10 +22,11 @@
addDelegate, removeDelegate, delegatesOf, delegatedTo, allGroupDelegates
)
from twext.who.groups import GroupCacher
+from twext.who.idirectory import RecordType
from twext.who.test.test_xml import xmlService
from twisted.internet.defer import inlineCallbacks
from twistedcaldav.test.util import StoreTestCase
-from twext.who.idirectory import RecordType
+from uuid import UUID
class DelegationTest(StoreTestCase):
@@ -112,11 +113,11 @@
groups = (yield allGroupDelegates(txn))
self.assertEquals(
set([
- "49b350c69611477b94d95516b13856ab",
- "86144f73345a409782f1b782672087c7"
+ UUID("49b350c69611477b94d95516b13856ab"),
+ UUID("86144f73345a409782f1b782672087c7")
]), set(groups))
- # Delegate to a user who is already indirectly delegated-to
+ # Delegate to a user who is already indirectly delegated-to
yield addDelegate(txn, delegator, delegate1, True)
delegates = (yield delegatesOf(txn, delegator, True))
self.assertEquals(set(["sagen", "cdaboo", "glyph"]),
@@ -128,8 +129,8 @@
record = (yield self.xmlService.recordWithShortName(RecordType.user,
name))
newSet.add(record.guid)
- groupID, name, membershipHash = (yield txn.groupByGUID(group1.guid))
- numAdded, numRemoved = (yield self.groupCacher.synchronizeMembers(txn,
+ groupID, name, membershipHash = (yield txn.groupByGUID(group1.guid)) #@UnusedVariable
+ numAdded, numRemoved = (yield self.groupCacher.synchronizeMembers(txn, #@UnusedVariable
groupID, newSet))
delegates = (yield delegatesOf(txn, delegator, True))
self.assertEquals(set(["sagen", "cdaboo", "glyph", "dre"]),
Modified: CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py 2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py 2013-11-16 05:15:04 UTC (rev 11959)
@@ -19,11 +19,12 @@
"""
from twext.who.groups import GroupCacher, _expandedMembers
+from twext.who.idirectory import RecordType
from twext.who.test.test_xml import xmlService
-from twext.who.idirectory import RecordType
from twisted.internet.defer import inlineCallbacks
from twistedcaldav.test.util import StoreTestCase
from txdav.common.icommondatastore import NotFoundError
+from uuid import UUID
class GroupCacherTest(StoreTestCase):
@@ -73,19 +74,19 @@
yield self.groupCacher.refreshGroup(txn, record.guid)
groupID, name, membershipHash = (yield txn.groupByGUID(record.guid))
- self.assertEquals(membershipHash, "e90052eb63d47f32d5b03df0073f7854")
+ self.assertEquals(membershipHash, "4b0e162f2937f0f3daa6d10e5a6a6c33")
groupGUID, name, membershipHash = (yield txn.groupByID(groupID))
self.assertEquals(groupGUID, record.guid)
self.assertEquals(name, "Top Group 1")
- self.assertEquals(membershipHash, "e90052eb63d47f32d5b03df0073f7854")
+ self.assertEquals(membershipHash, "4b0e162f2937f0f3daa6d10e5a6a6c33")
members = (yield txn.membersOfGroup(groupID))
self.assertEquals(
- set(["9064df911dbc4e079c2b6839b0953876",
- "4ad155cbae9b475f986ce08a7537893e",
- "3bdcb95484d54f6d8035eac19a6d6e1f",
- "7d45cb10479e456bb54d528958c5734b"]),
+ set([UUID("9064df911dbc4e079c2b6839b0953876"),
+ UUID("4ad155cbae9b475f986ce08a7537893e"),
+ UUID("3bdcb95484d54f6d8035eac19a6d6e1f"),
+ UUID("7d45cb10479e456bb54d528958c5734b")]),
members
)
@@ -108,9 +109,9 @@
txn = store.newTransaction()
# Refresh the group so it's assigned a group_id
- guid = "49b350c69611477b94d95516b13856ab"
+ guid = UUID("49b350c69611477b94d95516b13856ab")
yield self.groupCacher.refreshGroup(txn, guid)
- groupID, name, membershipHash = (yield txn.groupByGUID(guid))
+ groupID, name, membershipHash = (yield txn.groupByGUID(guid)) #@UnusedVariable
# Remove two members, and add one member
newSet = set()
@@ -146,10 +147,10 @@
# Non-existent groupID
self.failUnlessFailure(txn.groupByID(42), NotFoundError)
- guid = "49b350c69611477b94d95516b13856ab"
- hash = "e90052eb63d47f32d5b03df0073f7854"
+ guid = UUID("49b350c69611477b94d95516b13856ab")
+ hash = "4b0e162f2937f0f3daa6d10e5a6a6c33"
yield self.groupCacher.refreshGroup(txn, guid)
- groupID, name, membershipHash = (yield txn.groupByGUID(guid))
+ groupID, name, membershipHash = (yield txn.groupByGUID(guid)) #@UnusedVariable
results = (yield txn.groupByID(groupID))
self.assertEquals([guid, "Top Group 1", hash], results)
Modified: CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py 2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py 2013-11-16 05:15:04 UTC (rev 11959)
@@ -961,6 +961,8 @@
def groupByID(self, groupID):
try:
results = (yield self._groupByID.on(self, groupID=groupID))[0]
+ if results:
+ results = [UUID("urn:uuid:" + results[0])] + results[1:]
returnValue(results)
except IndexError:
raise NotFoundError
@@ -980,6 +982,7 @@
return Insert({gm.GROUP_ID: Parameter("groupID"),
gm.MEMBER_GUID: Parameter("memberGUID")})
+
@classproperty
def _removeMemberFromGroupQuery(cls): #@NoSelf
gm = schema.GROUP_MEMBERSHIP
@@ -1023,7 +1026,7 @@
results = (yield self._selectGroupMembersQuery.on(self,
groupID=groupID))
for row in results:
- members.add(row[0])
+ members.add(UUID("urn:uuid:" + row[0]))
returnValue(members)
# End of Group Members
@@ -1189,7 +1192,7 @@
@type readWrite: C{boolean}
"""
return self._removeDelegateQuery.on(self, delegator=str(delegator),
- delegate=delegate, readWrite=1 if readWrite else 0)
+ delegate=str(delegate), readWrite=1 if readWrite else 0)
def removeDelegateGroup(self, delegator, delegateGroupID, readWrite):
@@ -1232,13 +1235,13 @@
results = (yield self._selectDelegatesQuery.on(self,
delegator=str(delegator), readWrite=1 if readWrite else 0))
for row in results:
- delegates.add(row[0])
+ delegates.add(UUID("urn:uuid:" + row[0]))
# Finally get those who are in groups which have been delegated to
results = (yield self._selectIndirectDelegatesQuery.on(self,
delegator=str(delegator), readWrite=1 if readWrite else 0))
for row in results:
- delegates.add(row[0])
+ delegates.add(UUID("urn:uuid:" + row[0]))
returnValue(delegates)
@@ -1262,16 +1265,16 @@
# First get the direct delegators
results = (yield self._selectDirectDelegatorsQuery.on(self,
- delegate=delegate, readWrite=1 if readWrite else 0))
+ delegate=str(delegate), readWrite=1 if readWrite else 0))
for row in results:
- delegators.add(row[0])
+ delegators.add(UUID("urn:uuid:" + row[0]))
# Finally get those who have delegated to groups the delegate
# is a member of
results = (yield self._selectIndirectDelegatorsQuery.on(self,
- delegate=delegate, readWrite=1 if readWrite else 0))
+ delegate=str(delegate), readWrite=1 if readWrite else 0))
for row in results:
- delegators.add(row[0])
+ delegators.add(UUID("urn:uuid:" + row[0]))
returnValue(delegators)
@@ -1296,7 +1299,7 @@
).on(self))
delegates = set()
for row in results:
- delegates.add(row[0])
+ delegates.add(UUID("urn:uuid:" + row[0]))
returnValue(delegates)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/c854961b/attachment.html>
More information about the calendarserver-changes
mailing list