--- a/web/views/forms.py Mon Jan 18 19:05:08 2010 +0100
+++ b/web/views/forms.py Mon Jan 18 19:21:30 2010 +0100
@@ -1,7 +1,7 @@
"""some base form classes for CubicWeb web client
:organization: Logilab
-:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
+:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
@@ -189,39 +189,15 @@
internal_fields = FieldsForm.internal_fields + ('__type', 'eid', '__maineid')
domid = 'entityForm'
- @iclassmethod
- def field_by_name(cls_or_self, name, role=None, eschema=None):
- """return field with the given name and role. If field is not explicitly
- defined for the form but `eclass` is specified, guess_field will be
- called.
- """
- try:
- return super(EntityFieldsForm, cls_or_self).field_by_name(name, role)
- except form.FieldNotFound:
- if eschema is None or role is None or not name in eschema.schema:
- raise
- rschema = eschema.schema.rschema(name)
- # XXX use a sample target type. Document this.
- tschemas = rschema.targets(eschema, role)
- fieldcls = _AFF.etype_get(eschema, rschema, role, tschemas[0])
- kwargs = _AFF_KWARGS.etype_get(eschema, rschema, role, tschemas[0])
- if kwargs is None:
- kwargs = {}
- if fieldcls:
- if not isinstance(fieldcls, type):
- return fieldcls # already and instance
- return fieldcls(name=name, role=role, eidparam=True, **kwargs)
- field = guess_field(eschema, rschema, role, eidparam=True, **kwargs)
- if field is None:
- raise
- return field
-
- def __init__(self, *args, **kwargs):
- self.edited_entity = kwargs.pop('entity', None)
+ def __init__(self, req, rset=None, row=None, col=None, *args, **kwargs):
+ # entity was either explicitly specified or we have a one line rset
+ if 'entity' in kwargs:
+ self.edited_entity = kwargs.pop('entity')
+ else:
+ self.edited_entity = rset.complete_entity(row or 0, col or 0)
+ self.edited_entity.complete()
msg = kwargs.pop('submitmsg', None)
- super(EntityFieldsForm, self).__init__(*args, **kwargs)
- if self.edited_entity is None:
- self.edited_entity = self.cw_rset.complete_entity(self.cw_row or 0, self.cw_col or 0)
+ super(EntityFieldsForm, self).__init__(req, rset, row, col, *args, **kwargs)
self.add_hidden('__type', self.edited_entity.__regid__, eidparam=True)
self.add_hidden('eid', self.edited_entity.eid)
if kwargs.get('mainform', True): # mainform default to true in parent