[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