web/views/editforms.py
branchtls-sprint
changeset 1276 f213008fad2c
parent 1234 4d5ff6a3d539
child 1277 2eeef019e186
equal deleted inserted replaced
1275:441201a5c13f 1276:f213008fad2c
    20 from cubicweb.rtags import RelationTags
    20 from cubicweb.rtags import RelationTags
    21 from cubicweb.utils import make_uid
    21 from cubicweb.utils import make_uid
    22 from cubicweb.view import EntityView
    22 from cubicweb.view import EntityView
    23 from cubicweb.common import tags
    23 from cubicweb.common import tags
    24 from cubicweb.web import INTERNAL_FIELD_VALUE, stdmsgs, formwidgets
    24 from cubicweb.web import INTERNAL_FIELD_VALUE, stdmsgs, formwidgets
    25 from cubicweb.web.form import CompositeForm, EntityFieldsForm, FormMixIn
    25 from cubicweb.web.form import (FieldNotFound, CompositeForm, EntityFieldsForm,
       
    26                                FormMixIn)
    26 from cubicweb.web.formfields import guess_field
    27 from cubicweb.web.formfields import guess_field
    27 from cubicweb.web.formrenderers import (FormRenderer, EntityFormRenderer,
    28 from cubicweb.web.formrenderers import (FormRenderer, EntityFormRenderer,
    28                                         EntityCompositeFormRenderer,
    29                                         EntityCompositeFormRenderer,
    29                                         EntityInlinedFormRenderer)
    30                                         EntityInlinedFormRenderer)
    30 _ = unicode
    31 _ = unicode
   294             result.append((rschema.display_name(entity.req, role), rschema, role))
   295             result.append((rschema.display_name(entity.req, role), rschema, role))
   295         return sorted(result)
   296         return sorted(result)
   296     
   297     
   297     @iclassmethod
   298     @iclassmethod
   298     def field_by_name(cls_or_self, name, role='subject', eclass=None):
   299     def field_by_name(cls_or_self, name, role='subject', eclass=None):
       
   300         """return field with the given name and role. If field is not explicitly
       
   301         defined for the form but `eclass` is specified, guess_field will be
       
   302         called.
       
   303         """
   299         try:
   304         try:
   300             return super(AutomaticEntityForm, cls_or_self).field_by_name(name, role)
   305             return super(AutomaticEntityForm, cls_or_self).field_by_name(name, role)
   301         except Exception: # XXX should raise more explicit exception
   306         except FieldNotFound: # XXX should raise more explicit exception
   302             if eclass is None:
   307             if eclass is None:
   303                 raise
   308                 raise
   304             field = guess_field(eclass, cls_or_self.schema.rschema(name), role,
   309             field = guess_field(eclass, cls_or_self.schema.rschema(name), role,
   305                                 eidparam=True)
   310                                 eidparam=True)
   306             if field is None:
   311             if field is None:
   307                 raise
   312                 raise
   308             raise
   313             return field
   309             
       
   310     
   314     
   311     def __init__(self, *args, **kwargs):
   315     def __init__(self, *args, **kwargs):
   312         super(AutomaticEntityForm, self).__init__(*args, **kwargs)
   316         super(AutomaticEntityForm, self).__init__(*args, **kwargs)
   313         if self.edited_entity.has_eid():
   317         if self.edited_entity.has_eid():
   314             self.edited_entity.complete()
   318             self.edited_entity.complete()