[CalendarServer-changes] [1186]
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
source_changes at macosforge.org
source_changes at macosforge.org
Wed Feb 14 08:16:11 PST 2007
Revision: 1186
http://trac.macosforge.org/projects/calendarserver/changeset/1186
Author: cdaboo at apple.com
Date: 2007-02-14 08:16:11 -0800 (Wed, 14 Feb 2007)
Log Message:
-----------
Fix for directory rendering api change. Also use a regular principal resource as the base class as a proxy is not
really a calendar principal because it has no home, inbox etc.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2007-02-14 16:02:40 UTC (rev 1185)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2007-02-14 16:16:11 UTC (rev 1186)
@@ -36,7 +36,7 @@
from twisted.web2.http import Response
from twisted.web2.http_headers import MimeType
-from twistedcaldav.extensions import DAVFile
+from twistedcaldav.extensions import DAVFile, DAVPrincipalResource
from twistedcaldav.extensions import ReadOnlyWritePropertiesResourceMixIn
from twistedcaldav.resource import CalendarPrincipalResource
from twistedcaldav.sql import AbstractSQLDatabase
@@ -66,10 +66,18 @@
# Permissions here are fixed, and are not subject to inherritance rules, etc.
return succeed(self.defaultAccessControlList())
-class CalendarUserProxyPrincipalResource (AutoProvisioningFileMixIn, PermissionsMixIn, CalendarPrincipalResource, DAVFile):
+class CalendarUserProxyPrincipalResource (AutoProvisioningFileMixIn, PermissionsMixIn, DAVPrincipalResource, DAVFile):
"""
Calendar user proxy principal resource.
"""
+
+ def davComplianceClasses(self):
+ return tuple(super(CalendarUserProxyPrincipalResource, self).davComplianceClasses()) + (
+ "calendar-access",
+ "calendar-schedule",
+ "calendar-availability",
+ )
+
def __init__(self, path, parent, proxyType):
"""
@param path: the path to the file which will back this resource.
@@ -110,6 +118,9 @@
else:
return super(CalendarUserProxyPrincipalResource, self).resourceType()
+ def isCollection(self):
+ return True
+
def writeProperty(self, property, request):
assert isinstance(property, davxml.WebDAVElement)
@@ -145,12 +156,12 @@
# HTTP
##
- def render(self, request):
- def format_list(method, *args):
+ def renderDirectoryBody(self, request):
+ def format_list(items, *args):
def genlist():
try:
item = None
- for item in method(*args):
+ for item in items:
yield " -> %s\n" % (item,)
if item is None:
yield " '()\n"
@@ -160,62 +171,43 @@
yield " ** %s **: %s\n" % (e.__class__.__name__, e)
return "".join(genlist())
- output = [
- """<html>"""
- """<head>"""
- """<title>%(title)s</title>"""
- """<style>%(style)s</style>"""
- """</head>"""
- """<body>"""
- """<div class="directory-listing">"""
- """<h1>Proxy Principal Details</h1>"""
- """<pre><blockquote>"""
- % {
- "title": unquote(request.uri),
- "style": self.directoryStyleSheet(),
- }
- ]
+ def link(url):
+ return """<a href="%s">%s</a>""" % (url, url)
- output.append("".join((
- "Directory Information\n"
- "---------------------\n"
- "Parent Directory GUID: %s\n" % (self.parent.record.service.guid,),
- "Realm: %s\n" % (self.parent.record.service.realmName,),
- "\n"
- "Parent Principal Information\n"
- "---------------------\n"
- "GUID: %s\n" % (self.parent.record.guid,),
- "Record type: %s\n" % (self.parent.record.recordType,),
- "Short name: %s\n" % (self.parent.record.shortName,),
- "Full name: %s\n" % (self.parent.record.fullName,),
- "\n"
- "Proxy Principal Information\n"
- "---------------------\n"
- "Principal URL: %s\n" % (self.principalURL(),),
- "\nAlternate URIs:\n" , format_list(self.alternateURIs),
- "\nGroup members:\n" , format_list(self.groupMembers),
- )))
+ def gotSuper(output):
+ return "".join((
+ """<div class="directory-listing">"""
+ """<h1>Principal Details</h1>"""
+ """<pre><blockquote>"""
+ """Directory Information\n"""
+ """---------------------\n"""
+ """Parent Directory GUID: %s\n""" % (self.parent.record.service.guid,),
+ """Realm: %s\n""" % (self.parent.record.service.realmName,),
+ """\n"""
+ """Parent Principal Information\n"""
+ """---------------------\n"""
+ """GUID: %s\n""" % (self.parent.record.guid,),
+ """Record type: %s\n""" % (self.parent.record.recordType,),
+ """Short name: %s\n""" % (self.parent.record.shortName,),
+ """Full name: %s\n""" % (self.parent.record.fullName,),
+ """Principal UID: %s\n""" % (self.parent.principalUID(),),
+ """Principal URL: %s\n""" % (link(self.parent.principalURL()),),
+ """\n"""
+ """Proxy Principal Information\n"""
+ """---------------------\n"""
+ """Principal UID: %s\n""" % (self.principalUID(),),
+ """Principal URL: %s\n""" % (link(self.principalURL()),),
+ """\nAlternate URIs:\n""" , format_list(self.alternateURIs()),
+ """\nGroup members:\n""" , format_list(link(p.principalURL()) for p in self.groupMembers()),
+ """\nGroup memberships:\n""" , format_list(link(p.principalURL()) for p in self.groupMemberships()),
+ """</pre></blockquote></div>""",
+ output
+ ))
- output.append(
- """</pre></blockquote></div>"""
- )
+ d = super(CalendarUserProxyPrincipalResource, self).renderDirectoryBody(request)
+ d.addCallback(gotSuper)
+ return d
- output.append(self.getDirectoryTable("Collection Listing"))
-
- output.append("</body></html>")
-
- output = "".join(output)
- if type(output) == unicode:
- output = output.encode("utf-8")
- mime_params = {"charset": "utf-8"}
- else:
- mime_params = {}
-
- response = Response(code=responsecode.OK, stream=output)
- response.headers.setHeader("content-type", MimeType("text", "html", mime_params))
-
- return response
-
##
# DAV
##
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070214/aa2d7083/attachment.html
More information about the calendarserver-changes
mailing list