[CalendarServer-changes] [2088] CalendarServer/branches/users/cdaboo/private_events-2081/ twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Wed Jan 2 14:23:32 PST 2008


Revision: 2088
          http://trac.macosforge.org/projects/calendarserver/changeset/2088
Author:   cdaboo at apple.com
Date:     2008-01-02 14:23:31 -0800 (Wed, 02 Jan 2008)

Log Message:
-----------
No X-CALENDARSERVER-ACCESS on Outbox POST.

Modified Paths:
--------------
    CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/ical.py
    CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/schedule.py

Modified: CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/ical.py
===================================================================
--- CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/ical.py	2008-01-02 21:41:32 UTC (rev 2087)
+++ CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/ical.py	2008-01-02 22:23:31 UTC (rev 2088)
@@ -160,6 +160,21 @@
     """
     X{iCalendar} component.
     """
+
+    # Private Event access levels.
+    ACCESS_PROPERTY     = "X-CALENDARSERVER-ACCESS"
+    ACCESS_PUBLIC       = "PUBLIC"
+    ACCESS_PRIVATE      = "PRIVATE"
+    ACCESS_CONFIDENTIAL = "CONFIDENTIAL"
+    ACCESS_RESTRICTED   = "RESTRICTED"
+
+    accessMap = {
+        "PUBLIC"       : ACCESS_PUBLIC,
+        "PRIVATE"      : ACCESS_PRIVATE,
+        "CONFIDENTIAL" : ACCESS_CONFIDENTIAL,
+        "RESTRICTED"   : ACCESS_RESTRICTED,
+    }
+
     @classmethod
     def fromString(clazz, string):
         """
@@ -364,6 +379,18 @@
         
         return None
     
+    def accessLevel(self):
+        """
+        Return the access level for this component.
+        @return: the access level for the calendar data.
+        """
+        assert self.name() == "VCALENDAR", "Must be a VCALENDAR: %r" % (self,)
+        
+        access = self.propertyValue(Component.ACCESS_PROPERTY)
+        if access:
+            access = access.upper()
+        return Component.accessMap.get(access, Component.ACCESS_PUBLIC)
+    
     def duplicate(self):
         """
         Duplicate this object and all its contents.

Modified: CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/schedule.py	2008-01-02 21:41:32 UTC (rev 2087)
+++ CalendarServer/branches/users/cdaboo/private_events-2081/twistedcaldav/schedule.py	2008-01-02 22:23:31 UTC (rev 2088)
@@ -35,6 +35,7 @@
 from twisted.web2.dav.util import joinURL
 
 from twistedcaldav import caldavxml
+from twistedcaldav import customxml
 from twistedcaldav import itip
 from twistedcaldav import logging
 from twistedcaldav.resource import CalDAVResource
@@ -271,6 +272,11 @@
         if not calendar.isValidITIP():
             logging.err("POST request must have a calendar component that satisfies iTIP requirements: %s" % (calendar,), system="CalDAV Outbox POST")
             raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+
+        # X-CALENDARSERVER-ACCESS is not allowed in Outbox POSTs
+        if calendar.hasProperty(Component.ACCESS_PROPERTY):
+            logging.err("X-CALENDARSERVER-ACCESS not allowed in a calendar component POST request: %s" % (calendar,), system="CalDAV Outbox POST")
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (calendarserver_namespace, "no-access-restrictions")))
     
         # Verify that the ORGANIZER's cu address maps to the request.uri
         outboxURL = None

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080102/f4b4f073/attachment-0001.html


More information about the calendarserver-changes mailing list