[Checkins] SVN: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py make MessageValidator implement slightly modified IPluggableTraverser that traverses the form and not the context.

Paul Carduner paulcarduner at gmail.com
Thu Jul 5 11:36:53 EDT 2007


Log message for revision 77468:
  make MessageValidator implement slightly modified IPluggableTraverser that traverses the form and not the context.

Changed:
  U   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py

-=-
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py	2007-07-05 15:10:12 UTC (rev 77467)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py	2007-07-05 15:36:52 UTC (rev 77468)
@@ -2,6 +2,7 @@
 import zope.component
 
 from z3c.traverser.traverser import SingleAttributeTraverserPlugin
+from z3c.traverser.interfaces import IPluggableTraverser, ITraverserPlugin
 from z3c.form.interfaces import IWidget, IField
 
 from jquery.layer import IJQueryJavaScriptBrowserLayer
@@ -25,10 +26,10 @@
     def _ajaxURL(self):
         # build js expression for extracting widget value
         # XXX: Maybe we should adapt the widget to IJSValueExtractorRenderer?
-        valueString = '$("#%s").val()' % (self.widgetID, )
+        valueString = '$("#%s").val()' % self.widgetID
 
         # build a js expression that joins valueString expression
-        queryString = '"?widget-id=%s&value=" + %s' % (self.widgetID, valueString)
+        queryString = '"?widget-id=%s&%s=" + %s' % (self.widgetID, self.widgetID.replace('-','.'), valueString)
 
         # build a js expression that joins form url, validate path, and query string
         ajaxURL = '"'+self.form.request.getURL() + '/validate" + ' + queryString
@@ -68,14 +69,14 @@
         self.field = field
 
     def render(self):
-        import pdb; pdb.set_trace()
         jsrenderer = zope.component.queryMultiAdapter(
             (self.form, self.field, self.form.request), interfaces.IJSMessageValidationRenderer)
         return jsrenderer.render()
 
 
 class BaseValidator(object):
-    zope.interface.implements(interfaces.IAJAXValidator)
+    zope.interface.implements(interfaces.IAJAXValidator,
+                              IPluggableTraverser)
 
     ValidationRenderer = None
 
@@ -86,7 +87,16 @@
         self.updateWidgets()
         return self.widgets.extract()
 
+    def publishTraverse(self, request, name):
+        # 1. Look at all the traverser plugins, whether they have an answer.
+        for traverser in zope.component.subscribers((self, request),
+                                     ITraverserPlugin):
+            try:
+                return traverser.publishTraverse(request, name)
+            except NotFound:
+                pass
 
+
 class MessageValidator(BaseValidator):
     '''Validator that sends error messages for widget in questiodn.'''
     ValidationRenderer = MessageValidationRenderer



More information about the Checkins mailing list