[CalendarServer-changes] [419]
CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/
static.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Nov 9 17:37:56 PST 2006
Revision: 419
http://trac.macosforge.org/projects/calendarserver/changeset/419
Author: wsanchez at apple.com
Date: 2006-11-09 17:37:55 -0800 (Thu, 09 Nov 2006)
Log Message:
-----------
Don't keep two mondo XML tree descriptions that are identical in this file.
...and let's compute the schedule privilege set by extending the
standard dav privilege set rather than statically describing it. Than
way, if the latter changes, the former changes with it.
Modified Paths:
--------------
CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/static.py
Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/static.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/static.py 2006-11-10 01:02:42 UTC (rev 418)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/static.py 2006-11-10 01:37:55 UTC (rev 419)
@@ -45,8 +45,7 @@
from twisted.web2.dav.fileop import mkcollection, rmdir
from twisted.web2.dav.http import ErrorResponse
from twisted.web2.dav.idav import IDAVResource
-from twisted.web2.dav.resource import TwistedACLInheritable
-from twisted.web2.dav.resource import TwistedQuotaRootProperty
+from twisted.web2.dav.resource import TwistedACLInheritable, TwistedQuotaRootProperty, davPrivilegeSet
from twisted.web2.dav.util import parentForURL, joinURL, bindMethods
from twistedcaldav import caldavxml
@@ -435,59 +434,7 @@
def http_MKCALENDAR (self, request): return responsecode.FORBIDDEN
def supportedPrivileges(self, request):
- if not hasattr(ScheduleInboxFile, "_supportedSchedulePrivilegeSet"):
- ScheduleInboxFile._supportedSchedulePrivilegeSet = davxml.SupportedPrivilegeSet(
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.All()),
- davxml.Description("all privileges", **{"xml:lang": "en"}),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Read()),
- davxml.Description("read resource", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Write()),
- davxml.Description("write resource", **{"xml:lang": "en"}),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteProperties()),
- davxml.Description("write resource properties", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteContent()),
- davxml.Description("write resource content", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Bind()),
- davxml.Description("add child resource", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Unbind()),
- davxml.Description("remove child resource", **{"xml:lang": "en"}),
- ),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Unlock()),
- davxml.Description("unlock resource without ownership", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.ReadACL()),
- davxml.Description("read resource access control list", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteACL()),
- davxml.Description("write resource access control list", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.ReadCurrentUserPrivilegeSet()),
- davxml.Description("read privileges for current principal", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(caldavxml.Schedule()),
- davxml.Description("schedule privileges for current principal", **{"xml:lang": "en"}),
- ),
- ),
- )
-
- return succeed(ScheduleInboxFile._supportedSchedulePrivilegeSet)
+ return succeed(schedulePrivilegeSet)
class ScheduleOutboxFile (ScheduleOutboxResource, CalDAVFile):
"""
@@ -518,59 +465,7 @@
def http_MKCALENDAR (self, request): return responsecode.FORBIDDEN
def supportedPrivileges(self, request):
- if not hasattr(ScheduleOutboxFile, "_supportedSchedulePrivilegeSet"):
- ScheduleOutboxFile._supportedSchedulePrivilegeSet = davxml.SupportedPrivilegeSet(
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.All()),
- davxml.Description("all privileges", **{"xml:lang": "en"}),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Read()),
- davxml.Description("read resource", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Write()),
- davxml.Description("write resource", **{"xml:lang": "en"}),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteProperties()),
- davxml.Description("write resource properties", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteContent()),
- davxml.Description("write resource content", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Bind()),
- davxml.Description("add child resource", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Unbind()),
- davxml.Description("remove child resource", **{"xml:lang": "en"}),
- ),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.Unlock()),
- davxml.Description("unlock resource without ownership", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.ReadACL()),
- davxml.Description("read resource access control list", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.WriteACL()),
- davxml.Description("write resource access control list", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(davxml.ReadCurrentUserPrivilegeSet()),
- davxml.Description("read privileges for current principal", **{"xml:lang": "en"}),
- ),
- davxml.SupportedPrivilege(
- davxml.Privilege(caldavxml.Schedule()),
- davxml.Description("schedule privileges for current principal", **{"xml:lang": "en"}),
- ),
- ),
- )
-
- return succeed(ScheduleOutboxFile._supportedSchedulePrivilegeSet)
+ return succeed(schedulePrivilegeSet)
class CalendarHomeFile (CalDAVFile):
"""
@@ -931,6 +826,31 @@
# Otherwise, there is no child
return (None, ())
+def _schedulePrivilegeSet():
+ all_privileges = None
+
+ for privilege in davPrivilegeSet.childrenOfType(davxml.SupportedPrivilege):
+ if isinstance(privilege.childOfType(davxml.Privilege).children[0], davxml.All):
+ all_privileges = list(privilege.childrenOfType(davxml.SupportedPrivilege))
+ break
+
+ all_privileges.append(
+ davxml.SupportedPrivilege(
+ davxml.Privilege(caldavxml.Schedule()),
+ davxml.Description("schedule privileges for current principal", **{"xml:lang": "en"}),
+ ),
+ )
+
+ return davxml.SupportedPrivilegeSet(
+ davxml.SupportedPrivilege(
+ davxml.Privilege(davxml.All()),
+ davxml.Description("all privileges", **{"xml:lang": "en"}),
+ *all_privileges
+ )
+ )
+
+schedulePrivilegeSet = _schedulePrivilegeSet()
+
##
# Attach methods
##
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061109/1c4de477/attachment.html
More information about the calendarserver-changes
mailing list