[Checkins] SVN: zope3org/trunk/src/zorg/multiform/
Stefan Martin
s.martin at iwm-kmrc.de
Mon Apr 10 18:21:01 EDT 2006
Log message for revision 66822:
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 22:19:23 UTC (rev 66821)
+++ zope3org/trunk/src/zorg/multiform/actions.txt 2006-04-10 22:20:59 UTC (rev 66822)
@@ -41,7 +41,7 @@
... def handle_save_action(self, action, data):
... form.applyChanges(self.context, self.form_fields,
... data, self.adapters)
- ... self.parentForm.subFormNewInputMode[self.context.__name__]=False
+ ... self.newInputMode = False
...
... @form.action(u"Upper", condition=multiform.isParentFormDisplayMode)
... def handle_uppercase_action(self, action, data):
@@ -63,15 +63,13 @@
...
... @form.action('Edit',condition=multiform.isFormDisplayMode)
... def handle_edit_action(self, action, data):
- ... names = sorted(self.subForms.keys())
- ... for name in names:
- ... self.subFormNewInputMode[name]=True
+ ... for form in self.subForms.values():
+ ... form.newInputMode = True
...
... @form.action('Cancel',condition=multiform.isFormInputMode)
... def handle_cancel_action(self, action, data):
- ... names = sorted(self.subForms.keys())
- ... for name in names:
- ... self.subFormNewInputMode[name]=False
+ ... for form in self.subForms.values():
+ ... form.newInputMode = False
So in our new form all widgets are display widgets per default
Modified: zope3org/trunk/src/zorg/multiform/gridform.txt
===================================================================
--- zope3org/trunk/src/zorg/multiform/gridform.txt 2006-04-10 22:19:23 UTC (rev 66821)
+++ zope3org/trunk/src/zorg/multiform/gridform.txt 2006-04-10 22:20:59 UTC (rev 66822)
@@ -33,6 +33,9 @@
selectable items in our order grid.
+ >>> def isSelected(form,action):
+ ... return ISelection(form.context).selected
+
>>> def isSelectedInput(form,action):
... if not isSubFormInputMode(form,action):
... return False
@@ -66,13 +69,24 @@
... def handle_save_action(self, action, data):
... form.applyChanges(self.context, self.form_fields,
... data, self.adapters)
- ... self.parentForm.subFormNewInputMode[self.context.__name__]=False
+ ... self.newInputMode = False
...
... @multiform.parentAction('Edit',
- ... condition=isSelectedDisplay)
+ ... condition=isSelected)
... def handle_edit_action(self, action, data):
- ... print "Edit"
- ... self.parentForm.subFormNewInputMode[self.context.__name__]=True
+ ... self.newInputMode = True
+ ...
+ ... @multiform.itemAction(u"SingleSave",
+ ... condition=isSubFormInputMode,inputMode=True)
+ ... def handle_save_action(self, action, data):
+ ... form.applyChanges(self.context, self.form_fields,
+ ... data, self.adapters)
+ ... self.newInputMode = False
+ ...
+ ... @multiform.itemAction('SingleEdit',
+ ... condition=isSubFormDisplayMode)
+ ... def handle_edit_action(self, action, data):
+ ... self.newInputMode = True
>>> class OrdersForm(gridform.GridFormBase):
@@ -86,9 +100,8 @@
...
... @form.action('Cancel',condition=multiform.isFormInputMode)
... def handle_cancel_action(self, action, data):
- ... names = sorted(self.subForms.keys())
- ... for name in names:
- ... self.subFormNewInputMode[name]=False
+ ... for form in self.subForms.values():
+ ... form.newInputMode = False
Due to the reason that the ``inputMode`` attribute is ``False`` we now
get DisplayWidgets for all fields, except the ``selected`` field
@@ -146,5 +159,24 @@
</div>
<div>
<div><input... checked="checked" ... name="form.n1.selected" ... /></div>
+ <div>1</div>
<div><input... name="form.n1.name" ...</div>
- </div>
\ No newline at end of file
+ </div>
+
+Now we test the actions which are displayed in each row.
+
+ >>> request = TestRequest()
+ >>> #request.form['form.n1.actions.singleedit']=u''
+ >>> gf = OrdersForm(orderMapping,request)
+ >>> res = gf()
+ >>> [action.__name__ for action in gf.subForms['n1'].availableActions()]
+ [u'form.n1.actions.singleedit']
+
+We call the singleedit to edit a single row.
+
+ >>> request = TestRequest()
+ >>> request.form['form.n0.selected.used']=u''
+ >>> request.form['form.n1.selected.used']=u''
+ >>> request.form['form.n1.actions.singleedit']=u''
+ >>> gf = OrdersForm(orderMapping,request)
+ >>> res = gf()
\ No newline at end of file
Modified: zope3org/trunk/src/zorg/multiform/multiform.py
===================================================================
--- zope3org/trunk/src/zorg/multiform/multiform.py 2006-04-10 22:19:23 UTC (rev 66821)
+++ zope3org/trunk/src/zorg/multiform/multiform.py 2006-04-10 22:20:59 UTC (rev 66822)
@@ -99,10 +99,10 @@
def __init__(self,context,request,parentForm):
# we have to copy the default fields, so that we can mutate
# them in our instance
- self.form_fields=copy.deepcopy(self.__class__.form_fields)
- self.request=request
+ self.form_fields = copy.deepcopy(self.__class__.form_fields)
+ self.request = request
self.context = getMultiAdapter([context,self],IFormLocation)
- self.parentForm=parentForm
+ self.parentForm = parentForm
def update(self):
super(ItemFormBase,self).update()
@@ -128,28 +128,27 @@
inputMode = None
newInputMode = None
subFormInputMode = {}
- subFormNewInputMode = {}
selection = []
actions = []
def update(self):
- self.initInputMode()
self.checkInputMode()
self.updateSelection()
super(MultiFormBase,self).update()
- subFormReset = False
hasErrors = False
for form in self.subForms.values():
form.update()
- if form.errors is not None:
- hasErrors = hasErrors or form.errors
- if hasErrors:
- self.subFormNewInputMode = {}
- if len(self.subFormNewInputMode) > 0:
- for name in self.subFormNewInputMode:
- self.setUpForm(name, self.context[name], self.subFormNewInputMode[name])
- self.subFormInputMode[name] = self.subFormNewInputMode[name]
- self.refreshSubActionNames()
+ for form in self.subForms.values():
+ refresh = False
+ if form.newInputMode is not None:
+ newInputMode = form.newInputMode
+ context = self.context[form.context.__name__]
+ name = context.__name__
+ self.setUpForm(name, context, newInputMode)
+ self.subFormInputMode[name] = newInputMode
+ refresh = True
+ if refresh:
+ self.refreshSubActionNames()
def setUpWidgets(self, *args, **kw):
super(MultiFormBase,self).setUpWidgets(*args,**kw)
@@ -157,21 +156,21 @@
self.setUpForms(*args, **kw)
def setUpForm(self, name, item, inputMode, *args, **kw):
- prefix = (self.prefix and self.prefix+'.' or '') + name
- subForm = self.newSubForm(item)
- if inputMode is not None and not inputMode:
- forceInput = self.itemFormFactory.forceInput
- for field in subForm.form_fields:
- if field.__name__ not in forceInput:
- field.for_display=True
- subForm.setPrefix(prefix)
- subForm.setUpWidgets(*args, **kw)
- self.subForms[name] = subForm
+ prefix = (self.prefix and self.prefix+'.' or '') + name
+ subForm = self.newSubForm(item)
+ if inputMode is not None and not inputMode:
+ forceInput = self.itemFormFactory.forceInput
+ for field in subForm.form_fields:
+ if field.__name__ not in forceInput:
+ field.for_display=True
+ subForm.inputMode = inputMode
+ subForm.setPrefix(prefix)
+ subForm.setUpWidgets(*args, **kw)
+ self.subForms[name] = subForm
def setUpForms(self, *args, **kw):
-
for name,item in self.context.items():
- inputMode = self.subFormInputMode.get(name, self.inputMode)
+ inputMode = self.subFormInputMode.get(name,self.itemFormFactory.inputMode)
self.setUpForm(name, item, inputMode)
self.refreshSubActionNames()
@@ -188,22 +187,6 @@
self.subActionNames.append(name)
- def setInputMode(self,v=True):
- if self.inputMode != v:
- self.inputMode = v
- for form in self.subForms.values():
- form.form_reset=True
-
-
- def initInputMode(self):
- self.inputMode = self.itemFormFactory.inputMode
- if self.inputMode is None:
- self.inputMode = False
- for field in self.itemFormFactory.form_fields:
- if not field.for_display:
- self.inputMode=True
- break
-
def checkInputMode(self):
self.subFormInputMode = {}
inputMode = None
@@ -248,7 +231,7 @@
def newSubForm(self,item):
- """creates a new instance from teh itemFormFactory for
+ """creates a new instance from the itemFormFactory for
temporary usage"""
return self.itemFormFactory(item,self.request,self)
More information about the Checkins
mailing list