[CalendarServer-changes] [9036] CalendarServer/trunk/calendarserver/tools/shell
source_changes at macosforge.org
source_changes at macosforge.org
Wed Apr 11 16:57:27 PDT 2012
Revision: 9036
http://trac.macosforge.org/projects/calendarserver/changeset/9036
Author: wsanchez at apple.com
Date: 2012-04-11 16:57:27 -0700 (Wed, 11 Apr 2012)
Log Message:
-----------
Refactor record search and info generation to directory module.
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tools/shell/cmd.py
CalendarServer/trunk/calendarserver/tools/shell/directory.py
Modified: CalendarServer/trunk/calendarserver/tools/shell/cmd.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/shell/cmd.py 2012-04-11 23:36:08 UTC (rev 9035)
+++ CalendarServer/trunk/calendarserver/tools/shell/cmd.py 2012-04-11 23:57:27 UTC (rev 9036)
@@ -25,8 +25,6 @@
"Commands",
]
-import operator
-
#from twisted.python import log
from twisted.internet.defer import succeed
from twisted.internet.defer import inlineCallbacks, returnValue
@@ -37,6 +35,7 @@
from calendarserver.tools.tables import Table
from calendarserver.tools.shell.vfs import Folder, RootFolder
+from calendarserver.tools.shell.directory import findRecords, summarizeRecords
class UsageError(Exception):
@@ -465,46 +464,16 @@
if not tokens:
raise UsageError("No search term")
- for token in tokens:
- searchFieldNames = ("fullName", "firstName", "lastName", "emailAddresses")
- searchFields = tuple(
- (fieldName, token, True, "contains")
- for fieldName in searchFieldNames
- )
+ records = (yield findRecords(self.protocol.service.directory, tokens))
- records = (yield self.protocol.service.directory.recordsMatchingFields(searchFields))
- records = sorted(tuple(records), key=operator.attrgetter("fullName"))
-
if records:
- table = Table()
+ self.terminal.write((yield summarizeRecords(self.protocol.service.directory, records)))
+ else:
+ self.terminal.write("No matching principals found.")
- table.addHeader((
- "UID",
- "Record Type",
- "Short Names",
- "Email Addresses",
- "Full Name",
- ))
+ self.terminal.nextLine()
- def formatItems(items):
- if items:
- return ", ".join(items)
- else:
- return None
- for record in records:
- table.addRow((
- record.uid,
- record.recordType,
- formatItems(record.shortNames),
- formatItems(record.emailAddresses),
- record.fullName,
- ))
-
- table.printTable(self.terminal)
- self.terminal.nextLine()
-
-
#
# Python prompt, for the win
#
Modified: CalendarServer/trunk/calendarserver/tools/shell/directory.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/shell/directory.py 2012-04-11 23:36:08 UTC (rev 9035)
+++ CalendarServer/trunk/calendarserver/tools/shell/directory.py 2012-04-11 23:57:27 UTC (rev 9036)
@@ -19,6 +19,7 @@
"""
__all__ = [
+ "findRecords",
"recordInfo",
"recordBasicInfo",
"recordGroupMembershipInfo",
@@ -26,6 +27,8 @@
]
+import operator
+
from twisted.internet.defer import succeed
from twisted.internet.defer import inlineCallbacks, returnValue
@@ -33,6 +36,20 @@
@inlineCallbacks
+def findRecords(directory, terms):
+ for term in terms:
+ searchFieldNames = ("fullName", "firstName", "lastName", "emailAddresses")
+ searchFields = tuple(
+ (fieldName, term, True, "contains")
+ for fieldName in searchFieldNames
+ )
+
+ records = (yield directory.recordsMatchingFields(searchFields))
+
+ returnValue(sorted(tuple(records), key=operator.attrgetter("fullName")))
+
+
+ at inlineCallbacks
def recordInfo(directory, record):
"""
Complete record information.
@@ -154,3 +171,35 @@
table.addRow(row)
returnValue(table.toString())
+
+
+def summarizeRecords(directory, records):
+ table = Table()
+
+ table.addHeader((
+ "UID",
+ "Record Type",
+ "Short Names",
+ "Email Addresses",
+ "Full Name",
+ ))
+
+ def formatItems(items):
+ if items:
+ return ", ".join(items)
+ else:
+ return None
+
+ for record in records:
+ table.addRow((
+ record.uid,
+ record.recordType,
+ formatItems(record.shortNames),
+ formatItems(record.emailAddresses),
+ record.fullName,
+ ))
+
+ if table.rows:
+ return succeed(table.toString())
+ else:
+ return succeed(None)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120411/c32c3725/attachment.html>
More information about the calendarserver-changes
mailing list