[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