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

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 21 20:29:26 PST 2013


Revision: 10798
          http://trac.calendarserver.org//changeset/10798
Author:   wsanchez at apple.com
Date:     2013-02-21 20:29:26 -0800 (Thu, 21 Feb 2013)
Log Message:
-----------
Handle flags in describe()

Modified Paths:
--------------
    CalendarServer/trunk/twext/who/test/test_util.py
    CalendarServer/trunk/twext/who/util.py

Modified: CalendarServer/trunk/twext/who/test/test_util.py
===================================================================
--- CalendarServer/trunk/twext/who/test/test_util.py	2013-02-22 04:01:00 UTC (rev 10797)
+++ CalendarServer/trunk/twext/who/test/test_util.py	2013-02-22 04:29:26 UTC (rev 10798)
@@ -20,6 +20,7 @@
 
 from twisted.trial import unittest
 from twisted.python.constants import Names, NamedConstant
+from twisted.python.constants import Flags, FlagConstant
 
 from twext.who.idirectory import DirectoryServiceError
 from twext.who.util import ConstantsContainer
@@ -35,12 +36,26 @@
     screwdriver.description = "screw twister"
 
 
+
 class Instruments(Names):
     hammer = NamedConstant()
     chisel = NamedConstant()
 
 
 
+class Switches(Flags):
+    r = FlagConstant()
+    g = FlagConstant()
+    b = FlagConstant()
+
+    r.description = "red"
+    g.description = "green"
+    b.description = "blue"
+
+    black = FlagConstant()
+
+
+
 class ConstantsContainerTest(unittest.TestCase):
     def test_conflict(self):
         constants = set((Tools.hammer, Instruments.hammer))
@@ -98,3 +113,8 @@
     def test_describe(self):
         self.assertEquals("nail pounder", describe(Tools.hammer))
         self.assertEquals("hammer", describe(Instruments.hammer))
+
+    def test_describeFlags(self):
+        self.assertEquals("blue", describe(Switches.b))
+        self.assertEquals("red|green", describe(Switches.r|Switches.g))
+        self.assertEquals("blue|black", describe(Switches.b|Switches.black))

Modified: CalendarServer/trunk/twext/who/util.py
===================================================================
--- CalendarServer/trunk/twext/who/util.py	2013-02-22 04:01:00 UTC (rev 10797)
+++ CalendarServer/trunk/twext/who/util.py	2013-02-22 04:29:26 UTC (rev 10798)
@@ -26,6 +26,8 @@
     "iterFlags",
 ]
 
+from twisted.python.constants import FlagConstant
+
 from twext.who.idirectory import DirectoryServiceError
 
 
@@ -70,7 +72,13 @@
 
 
 def describe(constant):
-    return getattr(constant, "description", constant.name)
+    if isinstance(constant, FlagConstant):
+        parts = []
+        for flag in iterFlags(constant):
+            parts.append(getattr(flag, "description", flag.name))
+        return "|".join(parts)
+    else:
+        return getattr(constant, "description", constant.name)
 
 
 def iterFlags(flags):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130221/32fe6037/attachment-0001.html>


More information about the calendarserver-changes mailing list