[CalendarServer-changes] [5686] CalendarServer/trunk/twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Fri Jun 4 12:56:51 PDT 2010


Revision: 5686
          http://trac.macosforge.org/projects/calendarserver/changeset/5686
Author:   cdaboo at apple.com
Date:     2010-06-04 12:56:49 -0700 (Fri, 04 Jun 2010)
Log Message:
-----------
Limit on freebusy query attendees - default is 30.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
    CalendarServer/trunk/twistedcaldav/stdconfig.py

Modified: CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py	2010-06-04 19:50:52 UTC (rev 5685)
+++ CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py	2010-06-04 19:56:49 UTC (rev 5686)
@@ -188,9 +188,12 @@
     def loadRecipientsFromCalendarData(self):
 
         # Get the ATTENDEEs
-        attendees = set()
+        attendees = list()
+        unique_set = set()
         for attendee, _ignore in self.calendar.getAttendeesByInstance():
-            attendees.add(attendee)
+            if attendee not in unique_set:
+                attendees.append(attendee)
+                unique_set.add(attendee)
         
         if not attendees:
             log.err("%s request must have at least one Recipient" % (self.method,))
@@ -391,8 +394,14 @@
         partitioned_recipients = []
         remote_recipients = []
         imip_recipients = []
-        for recipient in self.recipients:
+        for ctr, recipient in enumerate(self.recipients):
     
+            # Check for freebusy limit
+            if freebusy and ctr >= config.Scheduling.Options.LimitFreeBusyAttendees:
+                err = HTTPError(ErrorResponse(responsecode.NOT_FOUND, (caldav_namespace, "recipient-limit")))
+                responses.add(recipient.cuaddr, Failure(exc_value=err), reqstatus=iTIPRequestStatus.NO_USER_SUPPORT)
+                continue
+                
             if self.fakeTheResult:
                 responses.add(recipient.cuaddr, responsecode.OK, reqstatus=iTIPRequestStatus.SUCCESS if freebusy else iTIPRequestStatus.MESSAGE_DELIVERED)
                 
@@ -411,7 +420,7 @@
             else:
                 err = HTTPError(ErrorResponse(responsecode.NOT_FOUND, (caldav_namespace, "recipient-exists")))
                 responses.add(recipient.cuaddr, Failure(exc_value=err), reqstatus=iTIPRequestStatus.INVALID_CALENDAR_USER)
-            
+
         # Now process local recipients
         if caldav_recipients:
             yield self.generateLocalSchedulingResponses(caldav_recipients, responses, freebusy)

Modified: CalendarServer/trunk/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/stdconfig.py	2010-06-04 19:50:52 UTC (rev 5685)
+++ CalendarServer/trunk/twistedcaldav/stdconfig.py	2010-06-04 19:56:49 UTC (rev 5686)
@@ -420,6 +420,7 @@
             "AllowGroupAsOrganizer"      : False, # Allow groups to be Organizers
             "AllowLocationAsOrganizer"   : False, # Allow locations to be Organizers
             "AllowResourceAsOrganizer"   : False, # Allow resources to be Organizers
+            "LimitFreeBusyAttendees"     : 30,    # Maximum number of attendees to request freebusy for
         }
     },
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100604/798dca9f/attachment.html>


More information about the calendarserver-changes mailing list