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

source_changes at macosforge.org source_changes at macosforge.org
Tue Jul 17 14:20:18 PDT 2012


Revision: 9460
          http://trac.macosforge.org/projects/calendarserver/changeset/9460
Author:   gaya at apple.com
Date:     2012-07-17 14:20:17 -0700 (Tue, 17 Jul 2012)
Log Message:
-----------
Some cleanup to move closer to future API

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-17 20:32:21 UTC (rev 9459)
+++ CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/sharing.py	2012-07-17 21:20:17 UTC (rev 9460)
@@ -157,10 +157,7 @@
         
         # Only certain states are sharer controlled
         if invitation.state() in ("NEEDS-ACTION", "ACCEPTED", "DECLINED",):
-            invitation._state = state
-            if summary is not None:
-                invitation._summary = summary
-            yield self.invitesDB().addOrUpdateRecord(invitation.legacyInvite())
+            invitation = yield self._updateInvitationForUID(invitation.uid(), state=state, summary=summary)
 
 
     @inlineCallbacks
@@ -410,8 +407,7 @@
         invitations = yield self._allInvitations()
         for invitation in invitations:
             if not self.principalForUID(invitation.shareeUID()) and invitation.state() != "INVALID":
-                invitation._state = "INVALID"
-                yield self.invitesDB().addOrUpdateRecord(invitation.legacyInvite())
+                yield self._updateInvitationForUID(invitation.uid(), state="INVALID")
 
 
     def inviteUserToShare(self, userid, cn, ace, summary, request):
@@ -498,7 +494,38 @@
         hosturl = (yield self.canonicalURL(request))
         returnValue("%s:%s" % (hosturl, userid))
         
+
+    def _legacyInviteFromInvitation(self, invitation):
+        """
+        compatibilityHack
+        """
+        return LegacyInvite(inviteuid=invitation.uid(), 
+                      userid="userid", 
+                      principalUID=invitation.shareeUID(), 
+                      common_name="common_name",
+                      access=invitation.shareeAccess(),
+                      state=invitation.state(),
+                      summary=invitation.summary() )
+
     @inlineCallbacks
+    def _createInvitation(self, invitation):
+        yield self.invitesDB().addOrUpdateRecord(self._legacyInviteFromInvitation(invitation))
+
+
+    @inlineCallbacks
+    def _updateInvitationForUID(self, uid, shareeAccess=None, state=None, summary=None):
+        invitation = yield self._invitationForUID(uid)
+        if shareeAccess:
+            invitation._shareeAccess = shareeAccess
+        if state:
+            invitation._state = state
+        if summary:
+            invitation._summary = summary
+        yield self.invitesDB().addOrUpdateRecord(self._legacyInviteFromInvitation(invitation))
+        returnValue(invitation)
+
+
+    @inlineCallbacks
     def _allInvitations(self):
         """
         replaces self.invitesDB().allRecords()
@@ -520,13 +547,13 @@
 
 
     @inlineCallbacks
-    def _invitationForUID(self, inviteUID):
+    def _invitationForUID(self, uid):
         """
         replaces self.invitesDB().recordForInviteUID(inviteUID)
         """
         invitations = yield self._allInvitations()
         for invitation in invitations:
-            if invitation.uid() == inviteUID:
+            if invitation.uid() == uid:
                 returnValue(invitation)
         returnValue(None)
 
@@ -554,8 +581,8 @@
             # Look for existing invite and update its fields or create new one
             invitation = yield self._invitationForShareeUID(shareeUID)
             if invitation:
-                invitation._shareeAccess = inviteAccessMapFromXML[type(ace)]
-                invitation._summary = summary
+                invitation = yield self._updateInvitationForUID(invitation.uid(), shareeAccess=inviteAccessMapFromXML[type(ace)], summary=summary)
+
             else:
                 invitation = Invitation(uid=str(uuid4()), 
                                     sharerUID=None, 
@@ -564,12 +591,11 @@
                                     state="NEEDS-ACTION", 
                                     summary=summary)
 
+                yield self._createInvitation(invitation)
+
             # Send invite
             yield self.sendInviteNotification(invitation, request)
 
-            # Add to database
-            yield self.invitesDB().addOrUpdateRecord(invitation.legacyInvite())
-
         finally:
             lock.clean()
 
@@ -921,7 +947,7 @@
 }
 inviteStatusMapFromXML = dict([(v,k) for k,v in inviteStatusMapToXML.iteritems()])
 
-class Invite(object):
+class LegacyInvite(object):
     
     def __init__(self, inviteuid, userid, principalUID, common_name, access, state, summary):
         self.inviteuid = inviteuid
@@ -955,15 +981,6 @@
         self._state = state
         self._summary = summary
 
-    def legacyInvite(self):
-        return Invite(inviteuid=self.uid(), 
-                      userid="userid", 
-                      principalUID=self.shareeUID(), 
-                      common_name="common_name",
-                      access=self.shareeAccess(),
-                      state=self.state(),
-                      summary=self.summary() )
-                      
     def uid(self):
         """
         Unique identifier for this record.  Randomly generated.
@@ -1154,7 +1171,7 @@
 
     def _makeRecord(self, row):
         
-        return Invite(*[str(item) if type(item) == types.UnicodeType else item for item in row])
+        return LegacyInvite(*[str(item) if type(item) == types.UnicodeType else item for item in row])
 
 class SharedHomeMixin(LinkFollowerMixIn):
     """

Modified: CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py	2012-07-17 20:32:21 UTC (rev 9459)
+++ CalendarServer/branches/users/gaya/inviteclean/twistedcaldav/test/test_sharing.py	2012-07-17 21:20:17 UTC (rev 9460)
@@ -77,6 +77,8 @@
 
     @inlineCallbacks
     def setUp(self):
+        self.calendarStore = yield buildStore(self, StubNotifierFactory())
+
         yield super(SharingTests, self).setUp()
 
         self.patch(config.Sharing, "Enabled", True)
@@ -88,6 +90,8 @@
         self.patch(CalDAVResource, "principalForCalendarUserAddress", lambda self, cuaddr: None if "bogus" in cuaddr else SharingTests.FakePrincipal(cuaddr))
         self.patch(CalDAVResource, "principalForUID", lambda self, principalUID: SharingTests.FakePrincipal("urn:uuid:" + principalUID ))
 
+    def createDataStore(self):
+        return self.calendarStore
 
     @inlineCallbacks
     def _refreshRoot(self, request=None):
@@ -622,6 +626,7 @@
         self.assertTrue("<write/>" in acl.toxml())
 
 
+"""
 class DatabaseSharingTests(SharingTests):
 
     @inlineCallbacks
@@ -633,4 +638,4 @@
     def createDataStore(self):
         return self.calendarStore
 
-
+"""

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-17 20:32:21 UTC (rev 9459)
+++ CalendarServer/branches/users/gaya/inviteclean/txdav/common/datastore/sql_legacy.py	2012-07-17 21:20:17 UTC (rev 9460)
@@ -34,7 +34,7 @@
     calendarqueryfilter, calendarquery, addressbookquery, expression, \
     addressbookqueryfilter
 from twistedcaldav.query.sqlgenerator import sqlgenerator
-from twistedcaldav.sharing import Invite
+from twistedcaldav.sharing import LegacyInvite
 from twistedcaldav.sharing import SharedCollectionRecord
 
 from txdav.caldav.icalendarstore import TimeRangeLowerLimit, TimeRangeUpperLimit
@@ -261,7 +261,7 @@
             _BIND_MODE_READ: "read-only",
             _BIND_MODE_WRITE: "read-write"
         }[bindMode]
-        return Invite(
+        return LegacyInvite(
             inviteuid, userid, ownerUID, common_name,
             access, state, summary
         )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120717/13dc8148/attachment.html>


More information about the calendarserver-changes mailing list