[CalendarServer-changes] [2140]
CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Wed Feb 13 15:19:38 PST 2008
Revision: 2140
http://trac.macosforge.org/projects/calendarserver/changeset/2140
Author: wsanchez at apple.com
Date: 2008-02-13 15:19:36 -0800 (Wed, 13 Feb 2008)
Log Message:
-----------
Centralize generation of formatted data in directory rendering output.
Sort principals in a reasonable-ish way.
Add principal full name to output.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2008-02-13 22:47:45 UTC (rev 2139)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2008-02-13 23:19:36 UTC (rev 2140)
@@ -202,30 +202,8 @@
def renderDirectoryBody(self, request):
# FIXME: Too much code duplication here from principal.py
+ from twistedcaldav.directory.principal import format_list, format_principals, format_link
- def format_list(items, *args):
- def genlist():
- try:
- item = None
- for item in items:
- yield " -> %s\n" % (item,)
- if item is None:
- yield " '()\n"
- except Exception, e:
- log.err("Exception while rendering: %s" % (e,))
- Failure().printTraceback()
- yield " ** %s **: %s\n" % (e.__class__.__name__, e)
- return "".join(genlist())
-
- 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">"""
@@ -243,14 +221,14 @@
"""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()),),
+ """Principal URL: %s\n""" % (format_link(self.parent.principalURL()),),
"""\n"""
"""Proxy Principal Information\n"""
"""---------------------\n"""
#"""GUID: %s\n""" % (self.guid,),
"""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()),
+ """Principal URL: %s\n""" % (format_link(self.principalURL()),),
+ """\nAlternate URIs:\n""" , format_list(format_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()),
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2008-02-13 22:47:45 UTC (rev 2139)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2008-02-13 23:19:36 UTC (rev 2140)
@@ -386,29 +386,6 @@
##
def renderDirectoryBody(self, request):
- def format_list(items, *args):
- def genlist():
- try:
- item = None
- for item in items:
- yield " -> %s\n" % (item,)
- if item is None:
- yield " '()\n"
- except Exception, e:
- log.err("Exception while rendering: %s" % (e,))
- Failure().printTraceback()
- yield " ** %s **: %s\n" % (e.__class__.__name__, e)
- return "".join(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)
-
def gotSuper(output):
return "".join((
"""<div class="directory-listing">"""
@@ -426,8 +403,8 @@
"""Short name: %s\n""" % (self.record.shortName,),
"""Full name: %s\n""" % (self.record.fullName,),
"""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()),
+ """Principal URL: %s\n""" % (format_link(self.principalURL()),),
+ """\nAlternate URIs:\n""" , format_list(format_link(u) for u in self.alternateURIs()),
"""\nGroup members:\n""" , format_principals(self.groupMembers()),
"""\nGroup memberships:\n""" , format_principals(self.groupMemberships()),
"""</pre></blockquote></div>""",
@@ -552,29 +529,6 @@
Directory calendar principal resource.
"""
def renderDirectoryBody(self, request):
- def format_list(items, *args):
- def genlist():
- try:
- item = None
- for item in items:
- yield " -> %s\n" % (item,)
- if item is None:
- yield " '()\n"
- except Exception, e:
- log.err("Exception while rendering: %s" % (e,))
- Failure().printTraceback()
- yield " ** %s **: %s\n" % (e.__class__.__name__, e)
- return "".join(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)
-
def gotSuper(output):
return "".join((
"""<div class="directory-listing">"""
@@ -592,12 +546,12 @@
"""Short name: %s\n""" % (self.record.shortName,),
"""Full name: %s\n""" % (self.record.fullName,),
"""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()),
+ """Principal URL: %s\n""" % (format_link(self.principalURL()),),
+ """\nAlternate URIs:\n""" , format_list(format_link(u) for u in self.alternateURIs()),
"""\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()),
+ """\nCalendar homes:\n""" , format_list(format_link(u) for u in self.calendarHomeURLs()),
+ """\nCalendar user addresses:\n""" , format_list(format_link(a) for a in self.calendarUserAddresses()),
"""</pre></blockquote></div>""",
output
))
@@ -731,3 +685,47 @@
name = "record-name"
davxml.registerElement(RecordNameProperty)
+
+def format_list(items, *args):
+ def genlist():
+ try:
+ item = None
+ for item in items:
+ yield " -> %s\n" % (item,)
+ if item is None:
+ yield " '()\n"
+ except Exception, e:
+ log.err("Exception while rendering: %s" % (e,))
+ Failure().printTraceback()
+ yield " ** %s **: %s\n" % (e.__class__.__name__, e)
+ return "".join(genlist())
+
+def format_principals(principals):
+ def sort(a, b):
+ def sortkey(principal):
+ try:
+ record = principal.record
+ except AttributeError:
+ try:
+ record = principal.parent.record
+ except:
+ return None
+
+ return [record.recordType, record.shortName]
+
+ return cmp(sortkey(a), sortkey(b))
+
+ def describe(principal):
+ if hasattr(principal, "record"):
+ return " - %s" % (principal.record.fullName,)
+ else:
+ return ""
+
+ return format_list(
+ """<a href="%s">%s%s</a>"""
+ % (principal.principalURL(), escape(str(principal)), describe(principal))
+ for principal in sorted(principals, sort)
+ )
+
+def format_link(url):
+ return """<a href="%s">%s</a>""" % (url, url)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080213/d90ecc01/attachment-0001.html
More information about the calendarserver-changes
mailing list