[CalendarServer-changes] [13333] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Apr 18 14:02:12 PDT 2014


Revision: 13333
          http://trac.calendarserver.org//changeset/13333
Author:   gaya at apple.com
Date:     2014-04-18 14:02:12 -0700 (Fri, 18 Apr 2014)
Log Message:
-----------
reconcileGroupAttendees() returns changed

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/ical.py
    CalendarServer/trunk/txdav/caldav/datastore/sql.py
    CalendarServer/trunk/txdav/who/groups.py

Modified: CalendarServer/trunk/twistedcaldav/ical.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/ical.py	2014-04-18 20:46:13 UTC (rev 13332)
+++ CalendarServer/trunk/twistedcaldav/ical.py	2014-04-18 21:02:12 UTC (rev 13333)
@@ -3399,6 +3399,7 @@
 
     def _reconcileGroupAttendee(self, groupCUA, memberAtttendeeProps):
 
+        changed = False
         for component in self.subcomponents():
             if component.name() in ignoredComponents:
                 continue
@@ -3412,6 +3413,7 @@
                 memberCUA = newAttendeeProp.value()
                 if newAttendeeProp.value() not in oldAttendeeCUAs:
                     component.addProperty(newAttendeeProp)
+                    changed = True
                 memberCUAs.add(memberCUA)
 
             # remove attendee or update MEMBER attribute for non-primary attendees in this group,
@@ -3423,16 +3425,21 @@
                             attendeeProp.removeParameterValue("MEMBER", groupCUA)
                             if not attendeeProp.parameterValues("MEMBER"):
                                 component.removeProperty(attendeeProp)
+                                changed = True
                     else:
                         if attendeeProp.value() in memberCUAs:
                             attendeeProp.setParameter("MEMBER", parameterValues + (groupCUA,))
+                            changed = True
 
+        return changed
 
+
     def reconcileGroupAttendees(self, groupCUAToAttendeeMemberPropMap):
 
+        changed = False
         allMemberCUAs = set()
         for groupCUA, memberAttendeeProps in groupCUAToAttendeeMemberPropMap.iteritems():
-            self._reconcileGroupAttendee(groupCUA, memberAttendeeProps)
+            changed |= self._reconcileGroupAttendee(groupCUA, memberAttendeeProps)
             allMemberCUAs |= set([memberAttendeeProp.value() for memberAttendeeProp in memberAttendeeProps])
 
         # remove orphans
@@ -3445,8 +3452,11 @@
                     attendeeCUA = attendeeMemberProp.value()
                     if attendeeCUA not in allMemberCUAs:
                         component.removeProperty(attendeeMemberProp)
+                        changed = True
 
+        return changed
 
+
     def allPerUserUIDs(self):
 
         results = set()

Modified: CalendarServer/trunk/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/sql.py	2014-04-18 20:46:13 UTC (rev 13332)
+++ CalendarServer/trunk/txdav/caldav/datastore/sql.py	2014-04-18 21:02:12 UTC (rev 13333)
@@ -1936,7 +1936,7 @@
         reconcile group attendees
         """
         if not config.Scheduling.Options.AllowGroupAsAttendee:
-            returnValue(None)
+            returnValue(False)
 
         attendeeProps = component.getAllAttendeeProperties()
         groupCUAs = set([
@@ -1955,12 +1955,14 @@
                 )
 
         # sync group attendees
-        component.reconcileGroupAttendees(groupCUAToAttendeeMemberPropMap)
+        changed = component.reconcileGroupAttendees(groupCUAToAttendeeMemberPropMap)
 
         # save for post processing
         self._groupCUAToAttendeeMemberPropMap = groupCUAToAttendeeMemberPropMap
 
+        returnValue(changed)
 
+
     @inlineCallbacks
     def updateGROUP_ATTENDEE(self):
         """

Modified: CalendarServer/trunk/txdav/who/groups.py
===================================================================
--- CalendarServer/trunk/txdav/who/groups.py	2014-04-18 20:46:13 UTC (rev 13332)
+++ CalendarServer/trunk/txdav/who/groups.py	2014-04-18 21:02:12 UTC (rev 13333)
@@ -23,7 +23,6 @@
 from twext.enterprise.dal.syntax import Delete, Select
 from twext.enterprise.jobqueue import WorkItem, PeerConnectionPool
 from twisted.internet.defer import inlineCallbacks, returnValue
-from twistedcaldav.ical import normalize_iCalStr
 from txdav.caldav.datastore.sql import CalendarStoreFeatures
 from txdav.common.datastore.sql_tables import schema
 import datetime
@@ -178,15 +177,14 @@
 
         # get db object
         calendarObject = (yield CalendarStoreFeatures(self.transaction._store).calendarObjectWithID(self.transaction, self.resourceID))
-        oldComponent = yield calendarObject.componentForUser()
+        component = yield calendarObject.componentForUser()
 
         # Change a copy of the original, as we need the original cached on the resource
         # so we can do a diff to test implicit scheduling changes
-        component = oldComponent.duplicate()
+        component = component.duplicate()
 
         # sync group attendees
-        calendarObject.reconcileGroupAttendees(component)
-        if normalize_iCalStr(oldComponent, sort=True) != normalize_iCalStr(component, sort=True):
+        if calendarObject.reconcileGroupAttendees(component):
             yield calendarObject.setComponent(component)
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140418/0f35d7d9/attachment-0001.html>


More information about the calendarserver-changes mailing list