[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