[CalendarServer-changes] [12592] twext/trunk/twext/who

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:18:23 PDT 2014


Revision: 12592
          http://trac.calendarserver.org//changeset/12592
Author:   wsanchez at apple.com
Date:     2014-02-06 12:28:18 -0800 (Thu, 06 Feb 2014)
Log Message:
-----------
Fix order issues with DirectoryRecord.description, make the output nicer.

Modified Paths:
--------------
    twext/trunk/twext/who/directory.py
    twext/trunk/twext/who/test/test_directory.py

Modified: twext/trunk/twext/who/directory.py
===================================================================
--- twext/trunk/twext/who/directory.py	2014-02-06 19:28:31 UTC (rev 12591)
+++ twext/trunk/twext/who/directory.py	2014-02-06 20:28:18 UTC (rev 12592)
@@ -452,26 +452,37 @@
         @return: A description.
         @rtype: L{unicode}
         """
-        description = [self.__class__.__name__, u":"]
+        def describeValue(value):
+            if hasattr(value, "description"):
+                value = value.description
+            else:
+                value = unicode(value)
 
-        for name in sorted(self.service.fieldName.iterconstants()):
-            if name not in self.fields:
+            return value
+
+        values = {}
+
+        for fieldName in self.service.fieldName.iterconstants():
+            if fieldName not in self.fields:
                 continue
 
-            value = self.fields[name]
+            value = self.fields[fieldName]
 
-            if hasattr(name, "description"):
-                name = name.description
+            if hasattr(fieldName, "description"):
+                name = fieldName.description
             else:
-                name = unicode(name)
+                name = unicode(fieldName.name)
 
-            if hasattr(value, "description"):
-                value = value.description
+            if self.service.fieldName.isMultiValue(fieldName):
+                values[name] = ", ".join(describeValue(v) for v in value)
             else:
-                value = unicode(value)
+                values[name] = describeValue(value)
 
-            description.append(u"\n  {0} = {1!r}".format(name, value))
+        description = [self.__class__.__name__, u":"]
 
+        for name in sorted(values.iterkeys()):
+            description.append(u"\n  {0} = {1}".format(name, values[name]))
+
         description.append(u"\n")
 
         return u"".join(description)

Modified: twext/trunk/twext/who/test/test_directory.py
===================================================================
--- twext/trunk/twext/who/test/test_directory.py	2014-02-06 19:28:31 UTC (rev 12591)
+++ twext/trunk/twext/who/test/test_directory.py	2014-02-06 20:28:18 UTC (rev 12592)
@@ -878,25 +878,23 @@
         """
         L{DirectoryRecord.description} returns the expected string.
         """
-        sagen = self.makeRecord(self.fields_sagen)
+        sagen = self.makeRecord(self.fields_wsanchez)
 
         self.assertEquals(
             dedent(
                 u"""
                 DirectoryRecord:
-                  UID = UID:sagen
+                  UID = UID:wsanchez
+                  email addresses = wsanchez at calendarserver.org, wsanchez at example.com
+                  full names = Wilfredo Sanchez, Wilfredo Sanchez Vega
                   record type = user
-                  short names = (u'sagen',)
-                  full names = (u'Morgen Sagen',)
-                  email addresses = ('sagen at calendarserver.org',)
+                  short names = wsanchez, wilfredo_sanchez
                 """[1:]
             ),
             sagen.description()
         )
 
-    test_description.todo = "Intermittent order issues"
 
-
     def test_members_group(self):
         """
         Group members for group records.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/9acca1bb/attachment.html>


More information about the calendarserver-changes mailing list