web/views/autoform.py
changeset 2005 e8032965f37a
parent 1982 27e81d0c7d05
child 2096 58c485797b03
equal deleted inserted replaced
2004:ea9eab290dcd 2005:e8032965f37a
    10 
    10 
    11 from logilab.common.decorators import iclassmethod
    11 from logilab.common.decorators import iclassmethod
    12 
    12 
    13 from cubicweb import typed_eid
    13 from cubicweb import typed_eid
    14 from cubicweb.web import stdmsgs, uicfg
    14 from cubicweb.web import stdmsgs, uicfg
    15 from cubicweb.web.form import FieldNotFound, EntityFieldsForm
    15 from cubicweb.web.form import FieldNotFound
    16 from cubicweb.web.formfields import guess_field
    16 from cubicweb.web.formfields import guess_field
    17 from cubicweb.web.formwidgets import Button, SubmitButton
    17 from cubicweb.web.formwidgets import Button, SubmitButton
    18 from cubicweb.web.views.editforms import toggleable_relation_link, relation_id
    18 from cubicweb.web.views import forms, editforms
    19 
    19 
    20 
    20 
    21 class AutomaticEntityForm(EntityFieldsForm):
    21 class AutomaticEntityForm(forms.EntityFieldsForm):
    22     """base automatic form to edit any entity.
    22     """base automatic form to edit any entity.
    23 
    23 
    24     Designed to be fully generated from schema but highly configurable through:
    24     Designed to be fully generated from schema but highly configurable through:
    25     * rtags (rcategories, rfields, rwidgets, inlined, rpermissions)
    25     * rtags (rcategories, rfields, rwidgets, inlined, rpermissions)
    26     * various standard form parameters
    26     * various standard form parameters
   233         entity = self.edited_entity
   233         entity = self.edited_entity
   234         pending_deletes = self.req.get_pending_deletes(entity.eid)
   234         pending_deletes = self.req.get_pending_deletes(entity.eid)
   235         for label, rschema, role in self.srelations_by_category('generic', 'add'):
   235         for label, rschema, role in self.srelations_by_category('generic', 'add'):
   236             relatedrset = entity.related(rschema, role, limit=self.related_limit)
   236             relatedrset = entity.related(rschema, role, limit=self.related_limit)
   237             if rschema.has_perm(self.req, 'delete'):
   237             if rschema.has_perm(self.req, 'delete'):
   238                 toggleable_rel_link_func = toggleable_relation_link
   238                 toggleable_rel_link_func = editforms.toggleable_relation_link
   239             else:
   239             else:
   240                 toggleable_rel_link_func = lambda x, y, z: u''
   240                 toggleable_rel_link_func = lambda x, y, z: u''
   241             related = []
   241             related = []
   242             for row in xrange(relatedrset.rowcount):
   242             for row in xrange(relatedrset.rowcount):
   243                 nodeid = relation_id(entity.eid, rschema, role,
   243                 nodeid = editforms.relation_id(entity.eid, rschema, role,
   244                                      relatedrset[row][0])
   244                                                relatedrset[row][0])
   245                 if nodeid in pending_deletes:
   245                 if nodeid in pending_deletes:
   246                     status = u'pendingDelete'
   246                     status = u'pendingDelete'
   247                     label = '+'
   247                     label = '+'
   248                 else:
   248                 else:
   249                     status = u''
   249                     status = u''