[Checkins] SVN: zope3org/trunk/src/zorg/multiform/

Stefan Martin s.martin at iwm-kmrc.de
Mon Apr 10 12:36:09 EDT 2006


Log message for revision 66795:
  

Changed:
  U   zope3org/trunk/src/zorg/multiform/actions.txt
  U   zope3org/trunk/src/zorg/multiform/gridform.txt
  U   zope3org/trunk/src/zorg/multiform/multiform.py

-=-
Modified: zope3org/trunk/src/zorg/multiform/actions.txt
===================================================================
--- zope3org/trunk/src/zorg/multiform/actions.txt	2006-04-10 16:22:45 UTC (rev 66794)
+++ zope3org/trunk/src/zorg/multiform/actions.txt	2006-04-10 16:36:09 UTC (rev 66795)
@@ -29,13 +29,13 @@
     ...         self.name = name
     ...         self.__name__= name
 
-    >>> orderMapping = dict([(str(k),Order(k,name='n%s'%k)) for k in range(2)])
+    >>> orderMapping = dict([('n%s'%k,Order(k,name='n%s'%k)) for k in range(2)])
 
     >>> class OrderForm(ItemFormBase):
     ...     inputMode=False
     ...     
-    ...     def __init__(self,context,request,parentForm,name):
-    ...         super(OrderForm,self).__init__(context,request,parentForm,name)
+    ...     def __init__(self,context,request,parentForm):
+    ...         super(OrderForm,self).__init__(context,request,parentForm)
     ...         self.form_fields = form.Fields(IOrder,omit_readonly=False,
     ...         render_context=True)
     ...         
@@ -44,7 +44,7 @@
     ...     def handle_save_action(self, action, data):
     ...         form.applyChanges(self.context, self.form_fields,
     ...         data, self.adapters)
-    ...         self.parentForm.subFormNewInputMode[self.name]=False
+    ...         self.parentForm.subFormNewInputMode[self.context.__name__]=False
     ...         
     ...     @form.action(u"Upper", condition=multiform.isParentFormDisplayMode)
     ...     def handle_uppercase_action(self, action, data):
@@ -122,14 +122,14 @@
     >>> request = TestRequest()
     >>> request.form['form.actions.save']=u''
     >>> for i in range(2):
-    ...     request.form['form.%s.name' % i]='newer name %s' % i
-    ...     request.form['form.%s.identifier' % i]= i
+    ...     request.form['form.n%s.name' % i]='newer name %s' % i
+    ...     request.form['form.n%s.identifier' % i]= i
     >>> pf =  OrdersForm(orderMapping,request)
     >>> result = pf()
 
 After the form is called, the changes are applied to the objects. 
-    >>> [obj.name for obj in orderMapping.values()]
-    [u'newer name 1', u'newer name 0']
+    >>> sorted([obj.name for obj in orderMapping.values()])
+    [u'newer name 0', u'newer name 1']
 
 Due to the reason the save handler sets the inputMode to False,
 only display widgets are rendered in the results
@@ -155,16 +155,16 @@
     >>> request = TestRequest()
     >>> request.form['form.actions.cancel']=u''
     >>> for i in range(2):
-    ...     request.form['form.%s.name' % i]='next name %s' % i
-    ...     request.form['form.%s.identifier' % i]= i
+    ...     request.form['form.n%s.name' % i]='next name %s' % i
+    ...     request.form['form.n%s.identifier' % i]= i
     >>> pf =  OrdersForm(orderMapping,request)
     >>> result = pf()
 
 After the form is called, the objects are left unchanged. And the form
 should be in display mode again.
 
-    >>> [obj.name for obj in orderMapping.values()]
-    [u'newer name 1', u'newer name 0']
+    >>> sorted([obj.name for obj in orderMapping.values()])
+    [u'newer name 0', u'newer name 1']
 
     >>> print result
     <div>
@@ -180,7 +180,7 @@
 mapping.
 
     >>> request = TestRequest()
-    >>> request.form['form.1.actions.upper']=u''
+    >>> request.form['form.n1.actions.upper']=u''
     >>> pf =  OrdersForm(orderMapping,request)
     >>> result = pf()
     >>> print result

Modified: zope3org/trunk/src/zorg/multiform/gridform.txt
===================================================================
--- zope3org/trunk/src/zorg/multiform/gridform.txt	2006-04-10 16:22:45 UTC (rev 66794)
+++ zope3org/trunk/src/zorg/multiform/gridform.txt	2006-04-10 16:36:09 UTC (rev 66795)
@@ -38,6 +38,10 @@
     ...         return False
     ...     return ISelection(form.context).selected
 
+	>>> def isFormDisplayMode(form,action):
+	...     parentForm = form.parentForm
+	...     return (parentForm.subFormInputMode.get(form.context.__name__,parentForm.inputMode)
+
     >>> class OrderForm(gridform.GridItemFormBase):
     ...     inputMode=False
     ...     forceInput=['selected']
@@ -56,13 +60,12 @@
     ...     def handle_save_action(self, action, data):
     ...         form.applyChanges(self.context, self.form_fields,
     ...         data, self.adapters)
-    ...         self.parentForm.newInputMode=False
+    ...         self.parentForm.subFormNewInputMode[self.name]=False
     ...         
     ...     @multiform.parentAction('Edit',
     ...         condition=multiform.isParentFormDisplayMode)
     ...     def handle_edit_action(self, action, data):
-    ...         self.inputMode=True
-    ...         self.parentForm.newInputMode=True
+    ...         self.parentForm.subFormNewInputMode[self.name]=True
 
 
     >>> class OrdersForm(gridform.GridFormBase):
@@ -76,7 +79,9 @@
     ...         
     ...     @form.action('Cancel',condition=multiform.isFormInputMode)
     ...     def handle_cancel_action(self, action, data):
-    ...         self.newInputMode=False
+    ...         names = sorted(self.subForms.keys())
+    ...         for name in names:
+    ...             self.subFormNewInputMode[name]=False
 
 Due to the reason that the ``inputMode`` attribute is ``False`` we now
 get DisplayWidgets for all fields, except the ``selected`` field

Modified: zope3org/trunk/src/zorg/multiform/multiform.py
===================================================================
--- zope3org/trunk/src/zorg/multiform/multiform.py	2006-04-10 16:22:45 UTC (rev 66794)
+++ zope3org/trunk/src/zorg/multiform/multiform.py	2006-04-10 16:36:09 UTC (rev 66795)
@@ -91,11 +91,10 @@
     inputMode = None
     newInputMode = None
 
-    def __init__(self,context,request,parentForm,name):
+    def __init__(self,context,request,parentForm):
         self.request=request
         self.context = getMultiAdapter([context,self],IFormLocation)
         self.parentForm=parentForm
-        self.name = name
 
     def update(self):
         super(ItemFormBase,self).update()
@@ -147,7 +146,7 @@
 
     def setUpForm(self, name, item, inputMode, *args, **kw):
             prefix = (self.prefix and self.prefix+'.' or '') + name
-            subForm = self.itemFormFactory(item,self.request,self,name)
+            subForm = self.itemFormFactory(item,self.request,self)
             if inputMode is not None and not inputMode:
                 forceInput = self.itemFormFactory.forceInput
                 for field in subForm.form_fields:
@@ -207,7 +206,7 @@
         if len(self.context) > 0:
             for name, item in self.context.items():
                 break
-            tmpForm = self.itemFormFactory(item,self.request,self,name)
+            tmpForm = self.itemFormFactory(item,self.request,self)
             for field in tmpForm.form_fields:
                 if not field.for_display and field.__name__ not in tmpForm.forceInput:
                     inputField = field



More information about the Checkins mailing list