[CalendarServer-changes] [7919] CalendarServer/branches/users/glyph/imip-and-admin-html/ calendarserver/webadmin/resource.py

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 11 21:43:36 PDT 2011


Revision: 7919
          http://trac.macosforge.org/projects/calendarserver/changeset/7919
Author:   glyph at apple.com
Date:     2011-08-11 21:43:36 -0700 (Thu, 11 Aug 2011)
Log Message:
-----------
add first functional renderer (searchResults)

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py

Modified: CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py
===================================================================
--- CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py	2011-08-12 04:43:25 UTC (rev 7918)
+++ CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py	2011-08-12 04:43:36 UTC (rev 7919)
@@ -60,12 +60,13 @@
         getModule(__name__).filePath.sibling("template.html").open()
     )
 
-    def __init__(self):
+    def __init__(self, resource):
         super(WebAdminPage, self).__init__()
+        self.resource = resource
 
 
     @renderer
-    def main(self, render, tag):
+    def main(self, request, tag):
         """
         Main renderer, which fills page-global slots like 'title'.
         """
@@ -80,6 +81,55 @@
         )
 
 
+    @renderer
+    @inlineCallbacks
+    def hasSearchResults(self, request, tag):
+        """
+        Renderer which detects if there are resource search results and
+        continues if so.
+        """
+        yield self.performSearch(request)
+        returnValue(tag)
+
+
+    @inlineCallbacks
+    def performSearch(self, request):
+        searchTerm = request.args.get('resourceSearch', [''])[0]
+        if searchTerm:
+            results = yield self.resource.search(searchTerm)
+        else:
+            results = []
+        returnValue(results)
+
+
+    @renderer
+    def searchResults(self, request, tag):
+        """
+        docstring for searchResults
+        """
+        d = self.performSearch(request)
+        def searchPerformed(results):
+            for idx, record in enumerate(results):
+                yield tag.clone().fillSlots(
+                    **{
+                        "rowClass": "even" if (idx % 2 == 0) else "odd",
+                        "type": record.recordType,
+                        "shortName": record.shortNames[0],
+                        "name": record.fullName,
+                        "typeStr": {
+                            "users"     : "User",
+                            "groups"    : "Group",
+                            "locations" : "Place",
+                            "resources" : "Resource",
+                        }.get(record.recordType),
+                        "shortNames": str(", ".join(record.shortNames)),
+                        "authIds": str(", ".join(record.authIDs)),
+                        "emails": str(", ".join(record.emailAddresses)),
+                    }
+                )
+        return d.addCallback(searchPerformed)
+
+
     def lookupRenderMethod(self, name):
         """
         FOR TESTING ONLY: construct valid renderers for any unknown renderer.
@@ -480,7 +530,7 @@
         Create a L{WebAdminPage} to render HTML content for this request, and
         return a response.
         """
-        htmlContent = yield flattenString(request, WebAdminPage())
+        htmlContent = yield flattenString(request, WebAdminPage(self))
         response = Response()
         response.stream = MemoryStream(htmlContent)
         for (header, value) in (
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110811/d03d72c8/attachment-0001.html>


More information about the calendarserver-changes mailing list