[CalendarServer-changes] [9436] CalendarServer/branches/users/gaya/inviteclean

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 12 11:46:51 PDT 2012


Revision: 9436
          http://trac.macosforge.org/projects/calendarserver/changeset/9436
Author:   gaya at apple.com
Date:     2012-07-12 11:46:51 -0700 (Thu, 12 Jul 2012)
Log Message:
-----------
ignore INVITE table NAME, RECIPIENT_ADDRESS and fix tests.

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/sharing.py
    CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py
    CalendarServer/branches/users/gaya/inviteclean/txdav/common/datastore/sql_legacy.py

Modified: CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/sharing.py	2012-07-12 00:13:15 UTC (rev 9435)
+++ CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/sharing.py	2012-07-12 18:46:51 UTC (rev 9436)
@@ -63,13 +63,26 @@
         """
         if config.Sharing.Enabled:
             
+            def invitePropertyElement(record, includeUID=True):
+
+                userid = "urn:uuid:" + record.principalUID
+                principal = self.principalForUID(record.principalUID)
+                cn = principal.displayName() if principal else record.principalUID
+                return customxml.InviteUser(
+                    customxml.UID.fromString(record.inviteuid) if includeUID else None,
+                    element.HRef.fromString(userid),
+                    customxml.CommonName.fromString(cn),
+                    customxml.InviteAccess(inviteAccessMapToXML[record.access]()),
+                    inviteStatusMapToXML[record.state](),
+                )
+
             # See if this property is on the shared calendar
             isShared = yield self.isShared(request)
             if isShared:
                 yield self.validateInvites()
                 records = yield self.invitesDB().allRecords()
                 returnValue(customxml.Invite(
-                    *[record.makePropertyElement() for record in records]
+                    *[invitePropertyElement(record) for record in records]
                 ))
                 
             # See if it is on the sharee calendar
@@ -87,7 +100,7 @@
                         element.HRef.fromString(owner),
                         customxml.CommonName.fromString(ownerCN),
                     ),
-                    *[record.makePropertyElement(includeUID=False) for record in records]
+                    *[invitePropertyElement(record, includeUID=False) for record in records]
                 ))
 
         returnValue(None)
@@ -396,7 +409,7 @@
         
         records = yield self.invitesDB().allRecords()
         for record in records:
-            if not self.principalForCalendarUserAddress(record.userid) and record.state != "INVALID":
+            if not self.principalForUID(record.principalUID) and record.state != "INVALID":
                 record.state = "INVALID"
                 yield self.invitesDB().addOrUpdateRecord(record)
 
@@ -494,11 +507,10 @@
             returnValue(False)
         
         principalUID = principal.principalUID()
-        # add code below to convert from "mailto:" + xxxx form of userid
-        # userid = "urn:uuid:" + principalUID
-        # NOTE: userid is currently ignored by Invite(), so change above is not needed
-        cn = principal.displayName()
-
+        # change  from "mailto:" + xxxx form of userid
+        userid = "urn:uuid:" + principalUID
+        # NOTE: userid is used by the lock below, but ignored by Invite()
+        
         # Acquire a memcache lock based on collection URL and sharee UID
         # TODO: when sharing moves into the store this should be replaced
         # by DB-level locking
@@ -509,11 +521,10 @@
             # Look for existing invite and update its fields or create new one
             record = yield self.invitesDB().recordForPrincipalUID(principalUID)
             if record:
-                record.name = cn
                 record.access = inviteAccessMapFromXML[type(ace)]
                 record.summary = summary
             else:
-                record = Invite(str(uuid4()), userid, principalUID, cn, inviteAccessMapFromXML[type(ace)], "NEEDS-ACTION", summary)
+                record = Invite(str(uuid4()), "userid", principalUID, "cn", inviteAccessMapFromXML[type(ace)], "NEEDS-ACTION", summary)
 
             # Send invite
             yield self.sendInvite(record, request)
@@ -559,7 +570,7 @@
     def uninviteRecordFromShare(self, record, request):
         
         # Remove any shared calendar or address book
-        sharee = self.principalForCalendarUserAddress(record.userid)
+        sharee = self.principalForUID(record.principalUID)
         if sharee:
             if self.isCalendarCollection():
                 shareeHome = yield sharee.calendarHome(request)
@@ -594,7 +605,7 @@
         hosturl = (yield self.canonicalURL(request))
 
         # Locate notifications collection for user
-        sharee = self.principalForCalendarUserAddress(record.userid)
+        sharee = self.principalForUID(record.principalUID)
         if sharee is None:
             raise ValueError("sharee is None but userid was valid before")
         
@@ -615,7 +626,7 @@
             customxml.DTStamp.fromString(PyCalendarDateTime.getNowUTC().getText()),
             customxml.InviteNotification(
                 customxml.UID.fromString(record.inviteuid),
-                element.HRef.fromString(record.userid),
+                element.HRef.fromString("urn:uuid:" + record.principalUID),
                 inviteStatusMapToXML[record.state](),
                 customxml.InviteAccess(inviteAccessMapToXML[record.access]()),
                 customxml.HostURL(
@@ -638,7 +649,7 @@
     def removeInvite(self, record, request):
         
         # Locate notifications collection for user
-        sharee = self.principalForCalendarUserAddress(record.userid)
+        sharee = self.principalForUID(record.principalUID)
         if sharee is None:
             raise ValueError("sharee is None but userid was valid before")
         notifications = (yield request.locateResource(sharee.notificationURL()))
@@ -860,25 +871,11 @@
     
     def __init__(self, inviteuid, userid, principalUID, common_name, access, state, summary):
         self.inviteuid = inviteuid
-        # self.userid = userid
-        # generate userid from principalUID
-        self.userid = "urn:uuid:" + principalUID
-        # TODO:  Get rid of userid completely.
         self.principalUID = principalUID
-        self.name = common_name
         self.access = access
         self.state = state
         self.summary = summary
         
-    def makePropertyElement(self, includeUID=True):
-        
-        return customxml.InviteUser(
-            customxml.UID.fromString(self.inviteuid) if includeUID else None,
-            element.HRef.fromString(self.userid),
-            customxml.CommonName.fromString(self.name),
-            customxml.InviteAccess(inviteAccessMapToXML[self.access]()),
-            inviteStatusMapToXML[self.state](),
-        )
 
 class InvitesDatabase(AbstractSQLDatabase, LoggingMixIn):
     
@@ -935,7 +932,7 @@
 
         self._db_execute("""insert or replace into INVITE (INVITEUID, USERID, PRINCIPALUID, NAME, ACCESS, STATE, SUMMARY)
             values (:1, :2, :3, :4, :5, :6, :7)
-            """, record.inviteuid, record.userid, record.principalUID, record.name, record.access, record.state, record.summary,
+            """, record.inviteuid, "userid", record.principalUID, "name", record.access, record.state, record.summary,
         )
     
     def removeRecordForInviteUID(self, inviteUID):

Modified: CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py	2012-07-12 00:13:15 UTC (rev 9435)
+++ CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py	2012-07-12 18:46:51 UTC (rev 9436)
@@ -82,8 +82,6 @@
         self.patch(config.Sharing, "Enabled", True)
         self.patch(config.Sharing.Calendars, "Enabled", True)
 
-        CalDAVResource.validUserIDForShare = self._fakeValidUserID
-        CalDAVResource.validUserIDWithCommonNameForShare = self._fakeValidUserID
         CalDAVResource.sendInvite = lambda self, record, request: succeed(True)
         CalDAVResource.removeInvite = lambda self, record, request: succeed(True)
 
@@ -102,18 +100,6 @@
         returnValue(result)
 
 
-    def _fakeValidUserID(self, userid, *args):
-        if userid.startswith("/principals/"):
-            return userid
-        if userid.endswith("@example.com"):
-            principal = SharingTests.FakePrincipal(userid)
-            return principal.path if len(args) == 0 else (userid, principal.path, principal.displayname,)
-        else:
-            return None if len(args) == 0 else (None, None, None,)
-
-    def _fakeInvalidUserID(self, userid, *args):
-        return None if len(args) == 0 else (None, None, None,)
-
     @inlineCallbacks
     def _doPOST(self, body, resultcode = responsecode.OK):
         request = SimpleRequest(self.site, "POST", "/calendar/")
@@ -531,16 +517,15 @@
             )
         ))
 
-        self.resource.validUserIDForShare = self._fakeInvalidUserID
-        self.resource.validUserIDWithCommonNameForShare = self._fakeInvalidUserID
         self.resource.principalForCalendarUserAddress = lambda cuaddr: None
+        self.resource.principalForUID = lambda principalUID: None
 
         propInvite = (yield self.resource.readProperty(customxml.Invite, None))
         self.assertEquals(self._clearUIDElementValue(propInvite), customxml.Invite(
             customxml.InviteUser(
                 customxml.UID.fromString(""),
                 davxml.HRef.fromString("urn:uuid:user01"),
-                customxml.CommonName.fromString("USER01"),
+                customxml.CommonName.fromString("user01"),
                 customxml.InviteAccess(customxml.ReadWriteAccess()),
                 customxml.InviteStatusInvalid(),
             )

Modified: CalendarServer/branches/users/gaya/inviteclean/txdav/common/datastore/sql_legacy.py
===================================================================
--- CalendarServer/branches/users/gaya/inviteclean/txdav/common/datastore/sql_legacy.py	2012-07-12 00:13:15 UTC (rev 9435)
+++ CalendarServer/branches/users/gaya/inviteclean/txdav/common/datastore/sql_legacy.py	2012-07-12 18:46:51 UTC (rev 9436)
@@ -164,7 +164,7 @@
                 .And(inv.RESOURCE_ID == bind.RESOURCE_ID)
                 .And(inv.HOME_RESOURCE_ID == home.RESOURCE_ID)
                 .And(inv.HOME_RESOURCE_ID == bind.HOME_RESOURCE_ID)),
-            OrderBy=inv.NAME, Ascending=True
+            OrderBy=home.OWNER_UID, Ascending=True
         )
 
 
@@ -353,7 +353,7 @@
                 resourceID=resourceID, homeID=homeResourceID
             )
             yield self._updateInviteQuery.on(
-                self._txn, name=record.name, uid=record.inviteuid
+                self._txn, name="name", uid=record.inviteuid
             )
         else:
             yield self._insertBindQuery.on(
@@ -366,10 +366,10 @@
                 message=record.summary
             )
             yield self._insertInviteQuery.on(
-                self._txn, uid=record.inviteuid, name=record.name,
+                self._txn, uid=record.inviteuid, name="name",
                 homeID=shareeHome._resourceID,
                 resourceID=self._collection._resourceID,
-                recipient=record.userid
+                recipient="userid"
             )
         
         # Must send notification to ensure cache invalidation occurs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120712/2fa09c8f/attachment-0001.html>


More information about the calendarserver-changes mailing list