[Checkins] SVN: z3c.formjs/trunk/src/z3c/formjs/ Make AJAXHandlers class a real selection manager, since I needed this

Stephan Richter srichter at cosmos.phy.tufts.edu
Thu Jun 12 13:25:44 EDT 2008


Log message for revision 87347:
  Make AJAXHandlers class a real selection manager, since I needed this 
  for projetc.
  

Changed:
  U   z3c.formjs/trunk/src/z3c/formjs/ajax.py
  U   z3c.formjs/trunk/src/z3c/formjs/interfaces.py

-=-
Modified: z3c.formjs/trunk/src/z3c/formjs/ajax.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/ajax.py	2008-06-12 16:31:37 UTC (rev 87346)
+++ z3c.formjs/trunk/src/z3c/formjs/ajax.py	2008-06-12 17:25:43 UTC (rev 87347)
@@ -42,7 +42,30 @@
 
 class AJAXHandlers(SelectionManager):
     """A selection manager for handling AJAX request handlers."""
+    zope.interface.implements(interfaces.IAJAXHandlers)
+    managerInterface = interfaces.IAJAXHandlers
 
+    def __init__(self, *args):
+        handlers = []
+        for arg in args:
+            if self.managerInterface.providedBy(arg):
+                handlers += arg.items()
+            elif interfaces.IAJAXHandler.providedBy(arg):
+                handlers.append((arg.func.__name__, arg))
+            else:
+                raise TypeError("Unrecognized argument type", arg)
+        keys = []
+        seq = []
+        byname = {}
+        for name, handler in handlers:
+            keys.append(name)
+            seq.append(handler)
+            byname[name] = handler
+
+        self._data_keys = keys
+        self._data_values = seq
+        self._data = byname
+
     def addHandler(self, name, handler):
         self._data_keys.append(name)
         self._data_values.append(handler)

Modified: z3c.formjs/trunk/src/z3c/formjs/interfaces.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/interfaces.py	2008-06-12 16:31:37 UTC (rev 87346)
+++ z3c.formjs/trunk/src/z3c/formjs/interfaces.py	2008-06-12 17:25:43 UTC (rev 87347)
@@ -343,14 +343,10 @@
 # -----[ AJAX ]--------------------------------------------------------
 
 
-class IAJAXRequestHandler(zope.interface.Interface):
-    """An object that has methods for handling ajax requests."""
+class IAJAXHandlers(ISelectionManager):
+    """Container of AJAX handlers."""
 
-    ajaxRequestHandlers = zope.schema.Object(
-        title=u"AJAX Request Handlers Manager",
-        schema=ISelectionManager)
 
-
 class IAJAXHandler(zope.interface.Interface):
 
     def __call__(context, request):
@@ -360,7 +356,14 @@
         without context and request being passed as arguments.
         """
 
+class IAJAXRequestHandler(zope.interface.Interface):
+    """An object that has methods for handling ajax requests."""
 
+    ajaxRequestHandlers = zope.schema.Object(
+        title=u"AJAX Request Handlers Manager",
+        schema=IAJAXHandlers)
+
+
 # -----[ Form Traverser ]-------------------------------------------------
 
 class IFormTraverser(zope.interface.Interface):



More information about the Checkins mailing list