[CalendarServer-changes] [13754] CalendarServer/branches/users/gaya/groupsharee2/txdav

source_changes at macosforge.org source_changes at macosforge.org
Fri Jul 11 16:57:30 PDT 2014


Revision: 13754
          http://trac.calendarserver.org//changeset/13754
Author:   gaya at apple.com
Date:     2014-07-11 16:57:30 -0700 (Fri, 11 Jul 2014)
Log Message:
-----------
one more test working

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/sql.py
    CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/test/test_sql_sharing.py
    CalendarServer/branches/users/gaya/groupsharee2/txdav/common/datastore/sql.py

Modified: CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/sql.py	2014-07-11 20:46:58 UTC (rev 13753)
+++ CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/sql.py	2014-07-11 23:57:30 UTC (rev 13754)
@@ -1989,17 +1989,34 @@
         @param shareeUID: UID of the sharee
         @type shareeUID: C{str}
         """
-        # Cancel invites - we'll just use whatever userid we are given
 
+        if not (
+            config.Sharing.Enabled and
+            config.Sharing.Calendars.Enabled and
+            config.Sharing.Calendars.Groups.Enabled
+        ):
+            returnValue(
+                (yield super(Calendar, self).uninviteUIDFromShare(shareeUID))
+            )
+
         record = yield self._txn.directoryService().recordWithUID(shareeUID.decode("utf-8"))
         if (
             record is None or
-            record.recordType != RecordType.group or not (
-                config.Sharing.Enabled and
-                config.Sharing.Calendars.Enabled and
-                config.Sharing.Calendars.Groups.Enabled
+            record.recordType != RecordType.group
+        ):
+            # delete all group sharees and individual sharees
+            shareeView = yield self.shareeView(shareeUID)
+            if shareeView is None:
+                returnValue(None)
+
+            # delete all group links for view's home
+            gs = schema.GROUP_SHAREE
+            yield Delete(
+                From=gs,
+                Where=(gs.CALENDAR_HOME_ID == shareeView.viewerHome()._resourceID).And(
+                    gs.CALENDAR_ID == self._resourceID)
             )
-        ):
+
             returnValue(
                 (yield super(Calendar, self).uninviteUIDFromShare(shareeUID))
             )
@@ -2020,7 +2037,6 @@
                         gs.GROUP_ID == groupID
                     )
                 )
-
                 if newMode is None:
                     # only group was shared, do delete share
                     yield super(Calendar, self).uninviteUIDFromShare(memberUID)
@@ -2029,7 +2045,6 @@
                     yield super(Calendar, self).inviteUIDToShare(memberUID, newMode)
 
 
-
 icalfbtype_to_indexfbtype = {
     "UNKNOWN"         : 0,
     "FREE"            : 1,

Modified: CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/test/test_sql_sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/test/test_sql_sharing.py	2014-07-11 20:46:58 UTC (rev 13753)
+++ CalendarServer/branches/users/gaya/groupsharee2/txdav/caldav/datastore/test/test_sql_sharing.py	2014-07-11 23:57:30 UTC (rev 13754)
@@ -616,8 +616,8 @@
 
 
     @inlineCallbacks
-    def _check_notifications(self, home, items):
-        notifyHome = yield self.transactionUnderTest().notificationsWithUID(home)
+    def _check_notifications(self, uid, items):
+        notifyHome = yield self.transactionUnderTest().notificationsWithUID(uid)
         notifications = yield notifyHome.listNotificationObjects()
         self.assertEqual(set(notifications), set(items))
 
@@ -659,23 +659,12 @@
             self.assertEqual((yield shareeViews[i].effectiveShareMode()), _BIND_MODE_READ)
             self.assertEqual(invites[i].status, _BIND_STATUS_INVITED)
             self.assertEqual(invites[i].summary, "summary")
-        #inviteUID = shareeView.shareUID()
+            yield self._check_notifications(invites[i].shareeUID, [invites[i].uid, ])
 
         self.assertTrue(calendar.isShared())
 
         yield self.commit()
 
-        '''
-        sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
-        self.assertTrue(sharedParent is None)
-        #yield self._check_notifications("user02", [inviteUID, ])
-
-        group = yield self.calendarObjectUnderTest(home="user01", calendar_name="calendar", name="group1.vcf")
-        self.assertTrue(group.isShared())
-
-        yield self.commit()
-        '''
-
         # Uninvite
         calendar = yield self.calendarUnderTest(home="user01", name="calendar")
         invites = yield calendar.sharingInvites()
@@ -683,13 +672,12 @@
         self.assertTrue(calendar.isShared())
 
         yield calendar.uninviteUIDFromShare("group02")
-        invites = yield calendar.sharingInvites()
-        self.assertEqual(len(invites), 0)
+        uninvites = yield calendar.sharingInvites()
+        self.assertEqual(len(uninvites), 0)
         self.assertTrue(calendar.isShared())
 
-        yield self._check_notifications("user06", [])
-        yield self._check_notifications("user07", [])
-        yield self._check_notifications("user08", [])
+        for i in range(3):
+            yield self._check_notifications(invites[i].shareeUID, [])
 
         yield self.commit()
 
@@ -706,48 +694,54 @@
         """
 
         # Invite
-        group = yield self.calendarObjectUnderTest(home="user01", calendar_name="calendar", name="group1.vcf")
-        invites = yield group.sharingInvites()
+        calendar = yield self.calendarUnderTest(home="user01", name="calendar")
+        invites = yield calendar.sharingInvites()
         self.assertEqual(len(invites), 0)
-        self.assertFalse(group.isShared())
+        self.assertFalse(calendar.isShared())
 
-        shareeView = yield group.inviteUIDToShare("user02", _BIND_MODE_READ, "summary")
-        invites = yield group.sharingInvites()
-        self.assertEqual(len(invites), 1)
-        inviteUID = shareeView.shareUID()
+        shareeViews = yield calendar.inviteUIDToShare("group02", _BIND_MODE_READ, "summary")
+        self.assertEqual(len(shareeViews), 3)
+        invites = yield calendar.sharingInvites()
+        self.assertEqual(len(invites), 3)
+        shareeViews = sorted(shareeViews, key=lambda shareeView: shareeView.viewerHome().uid())
+        invites = sorted(invites, key=lambda invitee: invitee.shareeUID)
+        for i in range(3):
+            self.assertEqual(invites[i].uid, shareeViews[i].shareUID())
+            self.assertEqual(invites[i].ownerUID, "user01")
+            self.assertEqual(invites[i].shareeUID, shareeViews[i].viewerHome().uid())
+            self.assertEqual(invites[i].mode, _BIND_MODE_GROUP)
+            self.assertEqual((yield shareeViews[i].effectiveShareMode()), _BIND_MODE_READ)
+            self.assertEqual(invites[i].status, _BIND_STATUS_INVITED)
+            self.assertEqual(invites[i].summary, "summary")
+            yield self._check_notifications(invites[i].shareeUID, [invites[i].uid, ])
 
-        sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
-        self.assertTrue(sharedParent is None)
+        self.assertTrue(calendar.isShared())
 
-        yield self._check_notifications("user02", [inviteUID, ])
-
-        self.assertTrue(group.isShared())
-
         yield self.commit()
 
         # Accept
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
-        yield shareeHome.acceptShare(inviteUID)
+        for invite in invites:
+            shareeHome = yield self.homeUnderTest(name=invite.shareeUID)
+            yield shareeHome.acceptShare(invite.uid)
 
-        yield self._check_calendar("user02", "user01", self.group1_children)
-        yield self._check_notifications("user01", [inviteUID + "-reply", ])
+        yield self._check_notifications("user01", [invite.uid + "-reply" for invite in invites])
 
-        group = yield self.calendarObjectUnderTest(home="user01", calendar_name="calendar", name="group1.vcf")
-        self.assertTrue(group.isShared())
+        calendar = yield self.calendarUnderTest(home="user01", name="calendar")
+        self.assertTrue(calendar.isShared())
 
         yield self.commit()
 
         # Re-accept
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
-        yield shareeHome.acceptShare(inviteUID)
+        for invite in invites:
+            shareeHome = yield self.homeUnderTest(name=invite.shareeUID)
+            yield shareeHome.acceptShare(invite.uid)
 
-        yield self._check_calendar("user02", "user01", self.group1_children)
-        yield self._check_notifications("user01", [inviteUID + "-reply", ])
+        yield self._check_notifications("user01", [invite.uid + "-reply" for invite in invites])
 
-        group = yield self.calendarObjectUnderTest(home="user01", calendar_name="calendar", name="group1.vcf")
-        self.assertTrue(group.isShared())
+        calendar = yield self.calendarUnderTest(home="user01", name="calendar")
+        self.assertTrue(calendar.isShared())
 
-
+    '''
     @inlineCallbacks
     def test_decline_share(self):
         """
@@ -775,7 +769,7 @@
         yield self.commit()
 
         # Decline
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID)
 
         sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
@@ -789,7 +783,7 @@
         yield self.commit()
 
         # Re-decline
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID)
 
         sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
@@ -829,7 +823,7 @@
         yield self.commit()
 
         # Accept
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.acceptShare(inviteUID)
 
         yield self._check_calendar("user02", "user01", self.group1_children)
@@ -841,7 +835,7 @@
         yield self.commit()
 
         # Decline
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID)
 
         sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
@@ -851,8 +845,8 @@
 
         group = yield self.calendarObjectUnderTest(home="user01", calendar_name="calendar", name="group1.vcf")
         self.assertTrue(group.isShared())
+    '''
 
-
     @inlineCallbacks
     def test_accept_remove_share(self):
         """
@@ -878,7 +872,7 @@
         yield self.commit()
 
         # Accept
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.acceptShare(inviteUID)
 
         yield self._check_calendar("user02", "user01", self.group1_children)
@@ -966,7 +960,7 @@
         yield self.commit()
 
         # Decline one
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID1)
 
         yield self._check_calendar("user02", "user01", self.group2_children)
@@ -979,7 +973,7 @@
         yield self.commit()
 
         # Decline other
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID2)
 
         sharedParent = yield self.calendarUnderTest(home="user02", name="user01")
@@ -1006,7 +1000,7 @@
         yield self.commit()
 
         # Decline one
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID2)
 
         yield self._check_calendar("user02", "user01", self.group1_children)
@@ -1021,7 +1015,7 @@
         yield self.commit()
 
         # Decline other
-        shareeHome = yield self.calendarHomeUnderTest(name="user02")
+        shareeHome = yield self.homeUnderTest(name="user02")
         yield shareeHome.declineShare(inviteUID1)
 
         sharedParent = yield self.calendarUnderTest(home="user02", name="user01")

Modified: CalendarServer/branches/users/gaya/groupsharee2/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee2/txdav/common/datastore/sql.py	2014-07-11 20:46:58 UTC (rev 13753)
+++ CalendarServer/branches/users/gaya/groupsharee2/txdav/common/datastore/sql.py	2014-07-11 23:57:30 UTC (rev 13754)
@@ -4731,7 +4731,6 @@
         """
         Called on the owner's resource.
         """
-
         # When deleting the message is the sharee's display name
         displayname = shareeView.shareMessage()
         if notificationState == _BIND_STATUS_DELETED:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140711/98a59fb2/attachment-0001.html>


More information about the calendarserver-changes mailing list