chiark / gitweb /
operation.py: Refactor `polswitch' a little.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 16 Mar 2013 00:31:03 +0000 (00:31 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 16 Mar 2013 00:31:03 +0000 (00:31 +0000)
We're going to use this structure again.

operation.py

index 1184e3d17996f6406ce29bf79c8873291dd76632..e10a1b5379160cc4fea4c72d2328035f5ec80524 100644 (file)
@@ -40,6 +40,16 @@ import util as U
 ### semantics may be that the services are all assigned the /same/ random
 ### password.)
 
+###--------------------------------------------------------------------------
+### Some utilities.
+
+OPS = ['set', 'reset', 'clear']
+## A list of the available operations.
+
+class polswitch (U.struct):
+  """A small structure holding a value for each operation."""
+  __slots__ = OPS
+
 ###--------------------------------------------------------------------------
 ### Operation protocol.
 
@@ -243,14 +253,11 @@ CONF.export('ClearRequest')
 ###--------------------------------------------------------------------------
 ### Master policy switch.
 
-class polswitch (U.struct):
-  __slots__ = ['set', 'reset', 'clear']
-
 CONF.DEFAULTS.update(
 
   ## Map a request type `set', `reset', or `clear', to the appropriate
   ## request class.
-  RQCLASS = polswitch(None, None, None),
+  RQCLASS = polswitch(**dict((i, None) for i in OPS)),
 
   ## Alternatively, set this to a mixin class to apply common policy to all
   ## the kinds of requests.