cubicweb/web/views/forms.py
changeset 11131 2dafcdd19c99
parent 11057 0b59724cb3f2
child 11767 432f87a63057
equal deleted inserted replaced
11130:9b8dcde03499 11131:2dafcdd19c99
   310         called.
   310         called.
   311         """
   311         """
   312         try:
   312         try:
   313             return super(EntityFieldsForm, cls_or_self).field_by_name(name, role)
   313             return super(EntityFieldsForm, cls_or_self).field_by_name(name, role)
   314         except form.FieldNotFound:
   314         except form.FieldNotFound:
   315             if eschema is None or role is None or not name in eschema.schema:
   315             if eschema is None or role is None or name not in eschema.schema:
   316                 raise
   316                 raise
   317             rschema = eschema.schema.rschema(name)
   317             rschema = eschema.schema.rschema(name)
   318             # XXX use a sample target type. Document this.
   318             # XXX use a sample target type. Document this.
   319             tschemas = rschema.targets(eschema, role)
   319             tschemas = rschema.targets(eschema, role)
   320             fieldcls = cls_or_self.uicfg_aff.etype_get(
   320             fieldcls = cls_or_self.uicfg_aff.etype_get(
   323                 eschema, rschema, role, tschemas[0])
   323                 eschema, rschema, role, tschemas[0])
   324             if kwargs is None:
   324             if kwargs is None:
   325                 kwargs = {}
   325                 kwargs = {}
   326             if fieldcls:
   326             if fieldcls:
   327                 if not isinstance(fieldcls, type):
   327                 if not isinstance(fieldcls, type):
   328                     return fieldcls # already and instance
   328                     return fieldcls  # already and instance
   329                 return fieldcls(name=name, role=role, eidparam=True, **kwargs)
   329                 return fieldcls(name=name, role=role, eidparam=True, **kwargs)
   330             if isinstance(cls_or_self, type):
   330             if isinstance(cls_or_self, type):
   331                 req = None
   331                 req = None
   332             else:
   332             else:
   333                 req = cls_or_self._cw
   333                 req = cls_or_self._cw