[CalendarServer-changes] [13898] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Aug 19 17:13:58 PDT 2014
Revision: 13898
http://trac.calendarserver.org//changeset/13898
Author: gaya at apple.com
Date: 2014-08-19 17:13:58 -0700 (Tue, 19 Aug 2014)
Log Message:
-----------
fix uninviteUIDFromShare(), require CalDAVTester r13897
Revision Links:
--------------
http://trac.calendarserver.org//changeset/13897
Modified Paths:
--------------
CalendarServer/trunk/requirements-dev.txt
CalendarServer/trunk/txdav/caldav/datastore/sql.py
Modified: CalendarServer/trunk/requirements-dev.txt
===================================================================
--- CalendarServer/trunk/requirements-dev.txt 2014-08-19 23:43:21 UTC (rev 13897)
+++ CalendarServer/trunk/requirements-dev.txt 2014-08-20 00:13:58 UTC (rev 13898)
@@ -7,4 +7,4 @@
mockldap
q
--editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVClientLibrary/trunk@13420#egg=CalDAVClientLibrary
---editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVTester/trunk@13893#egg=CalDAVTester
+--editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVTester/trunk@13897#egg=CalDAVTester
Modified: CalendarServer/trunk/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/sql.py 2014-08-19 23:43:21 UTC (rev 13897)
+++ CalendarServer/trunk/txdav/caldav/datastore/sql.py 2014-08-20 00:13:58 UTC (rev 13898)
@@ -1886,25 +1886,24 @@
)
)
).on(self._txn, uid=self.viewerHome().uid())
- if rows[0][0] > 0:
+ if rows[0][0] > 1:
# no mode change for group shares
- returnValue(
- {
- _BIND_MODE_GROUP: _BIND_MODE_GROUP,
- _BIND_MODE_GROUP_READ: _BIND_MODE_GROUP_READ,
- _BIND_MODE_GROUP_WRITE: _BIND_MODE_GROUP_WRITE,
- }.get(self._bindMode)
- )
+ result = {
+ _BIND_MODE_GROUP: _BIND_MODE_GROUP,
+ _BIND_MODE_GROUP_READ: _BIND_MODE_GROUP_READ,
+ _BIND_MODE_GROUP_WRITE: _BIND_MODE_GROUP_WRITE,
+ }.get(self._bindMode)
- # else return mode without any groups
- returnValue(
- {
+ else:
+ # return mode without any groups
+ result = {
_BIND_MODE_GROUP_READ: _BIND_MODE_READ,
_BIND_MODE_GROUP_WRITE: _BIND_MODE_WRITE,
}.get(self._bindMode)
- )
+ returnValue(result)
+
@inlineCallbacks
def updateShareeGroupLink(self, groupUID, mode=None):
"""
@@ -2073,22 +2072,20 @@
@type shareeUID: C{str}
"""
- # see if group sharee for self & delete
- gr = schema.GROUPS
- gs = schema.GROUP_SHAREE
- rows = yield Delete(
- From=gs,
- Where=(gs.CALENDAR_ID == self._resourceID).And(
- gs.GROUP_ID == Select(
- [gr.GROUP_ID],
- From=gr,
- Where=(gr.GROUP_UID == shareeUID)
- )
- ),
- Return=[gs.GROUP_ID]
- ).on(self._txn)
+ rows = None
+ groupID = (yield self._txn.groupByUID(shareeUID, create=False))[0]
+ if groupID is not None:
+ gs = schema.GROUP_SHAREE
+ rows = yield Select(
+ [gs.GROUP_ID],
+ From=gs,
+ Where=(gs.CALENDAR_ID == self._resourceID).And(
+ gs.GROUP_ID == groupID
+ ),
+ ).on(self._txn)
if rows:
+ reinvites = []
# uninvite each member of group
memberUIDs = yield self._txn.groupMemberUIDs(rows[0][0])
for memberUID in memberUIDs:
@@ -2101,9 +2098,21 @@
# one group or individual share: delete share
yield super(Calendar, self).uninviteUIDFromShare(memberUID)
else:
- # multiple groups or group and individual was shared, update to new mode
- yield super(Calendar, self).inviteUIDToShare(memberUID, newMode)
+ # multiple groups or group and individual was shared add to reinvite list to update
+ reinvites.append((memberUID, newMode))
+ # Delete before super.inviteUIDTOShare() and after super.inviteUIDToShare() so notification has correct access mode
+ yield Delete(
+ From=gs,
+ Where=(gs.CALENDAR_ID == self._resourceID).And(
+ gs.GROUP_ID == groupID
+ ),
+ ).on(self._txn)
+
+ for memberUID, newMode in reinvites:
+ shareeView = yield self.shareeView(memberUID)
+ yield super(Calendar, self).inviteUIDToShare(memberUID, newMode)
+
else:
shareeView = yield self.shareeView(shareeUID)
if shareeView is not None:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140819/bf3b5264/attachment.html>
More information about the calendarserver-changes
mailing list