[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