[Checkins] SVN: zope3org/trunk/src/zorg/multiform/
Stefan Martin
s.martin at iwm-kmrc.de
Mon Apr 10 14:58:22 EDT 2006
Log message for revision 66808:
Changed:
U zope3org/trunk/src/zorg/multiform/gridform.txt
U zope3org/trunk/src/zorg/multiform/multiform.py
-=-
Modified: zope3org/trunk/src/zorg/multiform/gridform.txt
===================================================================
--- zope3org/trunk/src/zorg/multiform/gridform.txt 2006-04-10 18:53:54 UTC (rev 66807)
+++ zope3org/trunk/src/zorg/multiform/gridform.txt 2006-04-10 18:58:21 UTC (rev 66808)
@@ -53,11 +53,8 @@
>>> class OrderForm(gridform.GridItemFormBase):
... inputMode=False
- ... forceInput=['selected']
- ...
- ... def __init__(self,context,request,parentForm):
- ... super(OrderForm,self).__init__(context,request,parentForm)
- ... self.form_fields = form.Fields(ISelection,IOrder,
+ ... forceInput=['selected']
+ ... form_fields = form.Fields(ISelection,IOrder,
... omit_readonly=False,render_context=True)
...
... def template(self):
@@ -99,8 +96,9 @@
>>> request = TestRequest()
>>> gf = OrdersForm(orderMapping,request)
- >>> print gf()
- <div>a
+ >>> gf.update()
+ >>> print gf.render()
+ <div>
<div><input ... name="form.n0.selected" type="checkbox" ... /></div>
<div>0</div>
<div>n0</div>
@@ -115,9 +113,11 @@
>>> request = TestRequest()
>>> request.form['form.n1.selected']=u'on'
+ >>> request.form['form.n1.selected.used']=u''
>>> gf = OrdersForm(orderMapping,request)
- >>> print gf()
- <div>a
+ >>> gf.update()
+ >>> print gf.render()
+ <div>
...
<div><input ... checked="checked" ... name="form.n1.selected" ...</div>
<div>1</div>
Modified: zope3org/trunk/src/zorg/multiform/multiform.py
===================================================================
--- zope3org/trunk/src/zorg/multiform/multiform.py 2006-04-10 18:53:54 UTC (rev 66807)
+++ zope3org/trunk/src/zorg/multiform/multiform.py 2006-04-10 18:58:21 UTC (rev 66808)
@@ -6,7 +6,7 @@
from zope.formlib import form
from zope.formlib.interfaces import IBoundAction
from zope.formlib.i18n import _
-from interfaces import IMultiForm, IParentAction, IItemAction
+from interfaces import IMultiForm, IParentAction, IItemAction, ISelection
from interfaces import IFormLocation,IItemForm
import copy
@@ -99,7 +99,7 @@
def __init__(self,context,request,parentForm):
# we have to copy the default fields, so that we can mutate
# them in our instance
- self.__dict__['form_fields']=copy.deepcopy(self.__class__.form_fields)
+ self.form_fields=copy.deepcopy(self.__class__.form_fields)
self.request=request
self.context = getMultiAdapter([context,self],IFormLocation)
self.parentForm=parentForm
@@ -129,11 +129,13 @@
newInputMode = None
subFormInputMode = {}
subFormNewInputMode = {}
+ selection = []
actions = []
def update(self):
self.initInputMode()
self.checkInputMode()
+ self.updateSelection()
super(MultiFormBase,self).update()
subFormReset = False
hasErrors = False
@@ -225,6 +227,25 @@
for name in self.context.keys():
prefix = self.prefix + '.' + name + '.' + field.__name__
self.subFormInputMode[name] = (prefix in self.request.form)
+
+ def updateSelection(self):
+ for field in self.itemFormFactory.form_fields:
+ if issubclass(field.field.interface,ISelection):
+ import pdb;pdb.set_trace()
+ form_fields = form.Fields(field)
+ for name,item in self.context.items():
+ sForm = form.FormBase(getMultiAdapter([item,self],IFormLocation), self.request)
+ prefix = (self.prefix and self.prefix+'.' or '') + name
+ sForm.setPrefix(prefix)
+ sForm.form_fields = form_fields
+ sForm.setUpWidgets()
+ data = {}
+ try:
+ form.getWidgetsData(sForm.widgets, sForm.prefix, data)
+ except:
+ pass
+ form.applyChanges(sForm.context, sForm.form_fields, data)
+ return
def newSubForm(self,item):
@@ -232,3 +253,4 @@
temporary usage"""
return self.itemFormFactory(item,self.request,self)
+
More information about the Checkins
mailing list