[CalendarServer-changes] [1128] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Mon Feb 5 15:49:52 PST 2007
Revision: 1128
http://trac.macosforge.org/projects/calendarserver/changeset/1128
Author: wsanchez at apple.com
Date: 2007-02-05 15:49:51 -0800 (Mon, 05 Feb 2007)
Log Message:
-----------
Show properties in dirlist
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/extensions.py
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2007-02-02 00:52:40 UTC (rev 1127)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2007-02-05 23:49:51 UTC (rev 1128)
@@ -344,7 +344,7 @@
"""</pre></blockquote></div>"""
)
- output.append(self.getDirectoryTable("Collection Listing"))
+ output.append(self.getDirectoryTable(request))
output.append("</body></html>")
Modified: CalendarServer/trunk/twistedcaldav/extensions.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/extensions.py 2007-02-02 00:52:40 UTC (rev 1127)
+++ CalendarServer/trunk/twistedcaldav/extensions.py 2007-02-05 23:49:51 UTC (rev 1128)
@@ -28,9 +28,10 @@
]
import urllib
+import cgi
import time
-from twisted.internet.defer import succeed
+from twisted.internet.defer import succeed, deferredGenerator, waitForDeferred
from twisted.web2 import responsecode
from twisted.web2.http import HTTPError, Response, RedirectResponse
from twisted.web2.http_headers import MimeType
@@ -182,42 +183,40 @@
"""
Render a directory listing.
"""
- pagetitle = "Directory listing for %s" % urllib.unquote(request.path)
-
output = [
"""<html>"""
"""<head>"""
- """<title>%(title)s</title>"""
+ """<title>Collection listing for %(path)s</title>"""
"""<style>%(style)s</style>"""
"""</head>"""
"""<body>"""
% {
- "title": pagetitle,
+ "path": "%s" % cgi.escape(urllib.unquote(request.path)),
"style": self.directoryStyleSheet(),
}
]
- output.append(self.getDirectoryTable(urllib.unquote(request.uri)))
+ def gotTable(table):
+ output.append(table)
+ output.append("</body></html>")
- output.append("</body></html>")
+ response = Response(200, {}, "".join(output))
+ response.headers.setHeader("content-type", MimeType("text", "html"))
+ return response
- response = Response(200, {}, "".join(output))
- response.headers.setHeader("content-type", MimeType("text", "html"))
- return response
+ d = self.getDirectoryTable(request)
+ d.addCallback(gotTable)
+ return d
- def getDirectoryTable(self, title):
+ def getDirectoryTable(self, request):
"""
Generate a directory listing table in HTML.
"""
-
output = [
"""<div class="directory-listing">"""
- """<h1>%(title)s</h1>"""
+ """<h1>Collection Listing</h1>"""
"""<table>"""
"""<tr><th>Name</th> <th>Size</th> <th>Last Modified</th> <th>MIME Type</th></tr>"""
- % {
- "title": title,
- }
]
even = False
@@ -237,19 +236,52 @@
% {
"even": even and "even" or "odd",
"url": url,
- "name": name,
+ "name": cgi.escape(name),
"size": size,
"lastModified": lastModified,
"type": contentType,
}
)
even = not even
- output.append("</table></div>")
- return "".join(output)
+ output.append(
+ """</table></div>"""
+ """<div class="directory-listing">"""
+ """<h1>Properties</h1>"""
+ """<table>"""
+ """<tr><th>Name</th> <th>Value</th></tr>"""
+ )
+ @deferredGenerator
+ def gotProperties(qnames):
+ even = False
+ for qname in qnames:
+ property = waitForDeferred(self.readProperty(qname, request))
+ yield property
+ property = property.getResult()
+
+ output.append(
+ """<tr class="%(even)s">"""
+ """<td>%(name)s</td>"""
+ """<td><pre>%(value)s</pre></td>"""
+ """</tr>"""
+ % {
+ "even": even and "even" or "odd",
+ "name": property.sname(),
+ "value": cgi.escape(property.toxml()),
+ }
+ )
+ even = not even
+
+ output.append("</div>")
+
+ yield "".join(output)
+
+ d = self.listProperties(request)
+ d.addCallback(gotProperties)
+ return d
+
def getChildDirectoryEntry(self, child, name):
-
def orNone(value, default="?", f=None):
if value is None:
return default
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070205/c5c4d4b0/attachment.html
More information about the calendarserver-changes
mailing list