[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