[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