def defaultAccessControlList(self): privs = ( davxml.Privilege(davxml.Read()), davxml.Privilege(caldavxml.ScheduleDeliver()), ) if config.Scheduling.CalDAV.OldDraftCompatibility: privs += (davxml.Privilege(caldavxml.Schedule()),) aces = ( # DAV:Read, CalDAV:schedule-deliver for all principals (does not include anonymous) davxml.ACE( davxml.Principal(davxml.Authenticated()), davxml.Grant(*privs), davxml.Protected(), ), ) if config.FreeBusyURL.AnonymousAccess: aces += ( # DAV:Read, for unauthenticated principals davxml.ACE( davxml.Principal(davxml.Unauthenticated()), davxml.Grant( davxml.Privilege(davxml.Read()), ), davxml.Protected(), ), ) return succeed(davxml.ACL(*aces))
def _schedulePrivilegeSet(deliver): edited = False top_supported_privileges = [] for supported_privilege in davPrivilegeSet.childrenOfType(davxml.SupportedPrivilege): all_privilege = supported_privilege.childOfType(davxml.Privilege) if isinstance(all_privilege.children[0], davxml.All): all_description = supported_privilege.childOfType(davxml.Description) all_supported_privileges = list(supported_privilege.childrenOfType(davxml.SupportedPrivilege)) all_supported_privileges.append( davxml.SupportedPrivilege( davxml.Privilege(caldavxml.ScheduleDeliver() if deliver else caldavxml.ScheduleSend()), davxml.Description("schedule privileges for current principal", **{"xml:lang": "en"}), ), ) if config.Scheduling.CalDAV.OldDraftCompatibility: all_supported_privileges.append( davxml.SupportedPrivilege( davxml.Privilege(caldavxml.Schedule()), davxml.Description("old-style schedule privileges for current principal", **{"xml:lang": "en"}), ), ) top_supported_privileges.append( davxml.SupportedPrivilege(all_privilege, all_description, *all_supported_privileges) ) edited = True else: top_supported_privileges.append(supported_privilege) assert edited, "Structure of davPrivilegeSet changed in a way that I don't know how to extend for schedulePrivilegeSet" return davxml.SupportedPrivilegeSet(*top_supported_privileges)
def defaultAccessControlList(self): privs = (davxml.Privilege(caldavxml.ScheduleDeliver()), ) if config.Scheduling.CalDAV.OldDraftCompatibility: privs += (davxml.Privilege(caldavxml.Schedule()), ) return succeed( davxml.ACL( # CalDAV:schedule-deliver for any authenticated user davxml.ACE( davxml.Principal(davxml.Authenticated()), davxml.Grant(*privs), ), ))
def defaultAccessControlList(self): if config.EnableProxyPrincipals: myPrincipal = yield self.parent.principalForRecord() privs = (davxml.Privilege(caldavxml.ScheduleSend()), ) if config.Scheduling.CalDAV.OldDraftCompatibility: privs += (davxml.Privilege(caldavxml.Schedule()), ) returnValue( davxml.ACL( # CalDAV:schedule for associated write proxies davxml.ACE( davxml.Principal( davxml.HRef( joinURL(myPrincipal.principalURL(), "calendar-proxy-write"))), davxml.Grant(*privs), davxml.Protected(), ), )) else: returnValue( super(ScheduleOutboxResource, self).defaultAccessControlList())