[CalendarServer-changes] [1723]
CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/
directory
source_changes at macosforge.org
source_changes at macosforge.org
Fri Jul 27 14:51:42 PDT 2007
Revision: 1723
http://trac.macosforge.org/projects/calendarserver/changeset/1723
Author: wsanchez at apple.com
Date: 2007-07-27 14:51:42 -0700 (Fri, 27 Jul 2007)
Log Message:
-----------
Proxy principals now also have an alternate URI with the /principals/users type path.
Clean up display in renderDirectoryBody() so that principals are
legible. (GUIDs are not).
Modified Paths:
--------------
CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/calendaruserproxy.py
CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/principal.py
Modified: CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/calendaruserproxy.py 2007-07-27 20:56:14 UTC (rev 1722)
+++ CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/calendaruserproxy.py 2007-07-27 21:51:42 UTC (rev 1723)
@@ -24,6 +24,8 @@
"CalendarUserProxyPrincipalResource",
]
+from cgi import escape
+
from twisted.internet.defer import succeed
from twisted.python import log
from twisted.python.failure import Failure
@@ -91,15 +93,20 @@
@param parent: the parent of this resource.
@param proxyType: a C{str} containing the name of the resource.
"""
- super(CalendarUserProxyPrincipalResource, self).__init__(path, joinURL(parent.principalURL(), proxyType))
-
- self.parent = parent
- self.pcollection = self.parent.parent.parent
- self.proxyType = proxyType
- self._url = joinURL(parent.principalURL(), proxyType)
if self.isCollection():
- self._url += "/"
+ slash = "/"
+ else:
+ slash = ""
+ url = joinURL(parent.principalURL(), proxyType) + slash
+
+ super(CalendarUserProxyPrincipalResource, self).__init__(path, url)
+
+ self.parent = parent
+ self.proxyType = proxyType
+ self.pcollection = self.parent.parent.parent # FIXME: if this is supposed to be public, it needs a better name
+ self._url = url
+
# Not terribly useful at present because we don't have a way
# to map a GUID back to the correct principal.
#self.guid = uuidFromName(self.parent.principalUID(), proxyType)
@@ -108,10 +115,19 @@
# can easily map back to a principal.
self.uid = "%s#%s" % (self.parent.principalUID(), proxyType)
+ self._alternate_urls = tuple(
+ joinURL(url, proxyType) + slash
+ for url in parent.alternateURIs()
+ if url.startswith("/")
+ )
+
# Provision in __init__() because principals are used prior to request
# lookups.
self.provision()
+ def __str__(self):
+ return "%s [%s]" % (self.parent, self.proxyType)
+
def _index(self):
"""
Return the SQL database for this group principal.
@@ -187,6 +203,8 @@
##
def renderDirectoryBody(self, request):
+ # FIXME: Too much code duplication here from principal.py
+
def format_list(items, *args):
def genlist():
try:
@@ -204,6 +222,12 @@
def link(url):
return """<a href="%s">%s</a>""" % (url, url)
+ def format_principals(principals):
+ return format_list(
+ """<a href="%s">%s</a>""" % (principal.principalURL(), escape(str(principal)))
+ for principal in principals
+ )
+
def gotSuper(output):
return "".join((
"""<div class="directory-listing">"""
@@ -228,9 +252,10 @@
#"""GUID: %s\n""" % (self.guid,),
"""Principal UID: %s\n""" % (self.principalUID(),),
"""Principal URL: %s\n""" % (link(self.principalURL()),),
- """\nAlternate URIs:\n""" , format_list(self.alternateURIs()),
- """\nGroup members (%s):\n""" % ({False:"Locked", True:"Editable"}[self.hasEditableMembership()]), format_list(link(p.principalURL()) for p in self.groupMembers()),
- """\nGroup memberships:\n""" , format_list(link(p.principalURL()) for p in self.groupMemberships()),
+ """\nAlternate URIs:\n""" , format_list(link(u) for u in self.alternateURIs()),
+ """\nGroup members (%s):\n""" % ({False:"Locked", True:"Editable"}[self.hasEditableMembership()])
+ , format_principals(self.groupMembers()),
+ """\nGroup memberships:\n""" , format_principals(self.groupMemberships()),
"""</pre></blockquote></div>""",
output
))
@@ -252,7 +277,7 @@
def alternateURIs(self):
# FIXME: Add API to IDirectoryRecord for getting a record URI?
- return ()
+ return self._alternate_urls
def principalURL(self):
return self._url
Modified: CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/principal.py 2007-07-27 20:56:14 UTC (rev 1722)
+++ CalendarServer/branches/users/wsanchez/deleted-uids/twistedcaldav/directory/principal.py 2007-07-27 21:51:42 UTC (rev 1723)
@@ -26,6 +26,7 @@
"DirectoryPrincipalResource",
]
+from cgi import escape
from urllib import unquote
from urlparse import urlparse
@@ -367,6 +368,9 @@
# lookups.
self.provision()
+ def __str__(self):
+ return "(%s) %s" % (self.record.recordType, self.record.shortName)
+
##
# HTTP
##
@@ -384,8 +388,14 @@
log.err("Exception while rendering: %s" % (e,))
Failure().printTraceback()
yield " ** %s **: %s\n" % (e.__class__.__name__, e)
- return "".join(genlist())
+ return "".join(sorted(genlist()))
+ def format_principals(principals):
+ return format_list(
+ """<a href="%s">%s</a>""" % (principal.principalURL(), escape(str(principal)))
+ for principal in principals
+ )
+
def link(url):
return """<a href="%s">%s</a>""" % (url, url)
@@ -408,8 +418,8 @@
"""Principal UID: %s\n""" % (self.principalUID(),),
"""Principal URL: %s\n""" % (link(self.principalURL()),),
"""\nAlternate URIs:\n""" , format_list(link(u) for u in 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()),
+ """\nGroup members:\n""" , format_principals(self.groupMembers()),
+ """\nGroup memberships:\n""" , format_principals(self.groupMemberships()),
"""\nCalendar homes:\n""" , format_list(link(u) for u in self.calendarHomeURLs()),
"""\nCalendar user addresses:\n""" , format_list(link(a) for a in self.calendarUserAddresses()),
"""</pre></blockquote></div>""",
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070727/c270a9e3/attachment.html
More information about the calendarserver-changes
mailing list