web/views/editforms.py
changeset 3369 7b88d12b4ee2
parent 3085 b415bca9a9ed
parent 3355 39ea15e4589a
child 3377 dd9d292b6a6d
child 3388 b8be8fc77c27
equal deleted inserted replaced
3300:c7c4775a5619 3369:7b88d12b4ee2
   324 
   324 
   325     title = _('creation')
   325     title = _('creation')
   326 
   326 
   327     def call(self, **kwargs):
   327     def call(self, **kwargs):
   328         """creation view for an entity"""
   328         """creation view for an entity"""
       
   329         # at this point we know etype is a valid entity type, thanks to our
       
   330         # selector
   329         etype = kwargs.pop('etype', self.req.form.get('etype'))
   331         etype = kwargs.pop('etype', self.req.form.get('etype'))
   330         try:
       
   331             etype = self.vreg.case_insensitive_etypes[etype.lower()]
       
   332         except KeyError:
       
   333             raise RequestError(self.req._('no such entity type %s') % etype)
       
   334         entity = self.vreg['etypes'].etype_class(etype)(self.req)
   332         entity = self.vreg['etypes'].etype_class(etype)(self.req)
   335         self.initialize_varmaker()
   333         self.initialize_varmaker()
   336         entity.eid = self.varmaker.next()
   334         entity.eid = self.varmaker.next()
   337         self.render_form(entity)
   335         self.render_form(entity)
   338 
   336 
   452         """
   450         """
   453         rset = self.rset
   451         rset = self.rset
   454         for i in xrange(len(rset)):
   452         for i in xrange(len(rset)):
   455             self.wview(self.id, rset, row=i, **kwargs)
   453             self.wview(self.id, rset, row=i, **kwargs)
   456 
   454 
   457     def cell_call(self, row, col, peid, rtype, role='subject', **kwargs):
   455     def cell_call(self, row, col, peid, rtype, role, i18nctx, **kwargs):
   458         """
   456         """
   459         :param peid: the parent entity's eid hosting the inline form
   457         :param peid: the parent entity's eid hosting the inline form
   460         :param rtype: the relation bridging `etype` and `peid`
   458         :param rtype: the relation bridging `etype` and `peid`
   461         :param role: the role played by the `peid` in the relation
   459         :param role: the role played by the `peid` in the relation
   462         """
   460         """
   463         entity = self.rset.get_entity(row, col)
   461         entity = self.rset.get_entity(row, col)
   464         divonclick = "restoreInlinedEntity('%s', '%s', '%s')" % (peid, rtype,
   462         divonclick = "restoreInlinedEntity('%s', '%s', '%s')" % (peid, rtype,
   465                                                                  entity.eid)
   463                                                                  entity.eid)
   466         self.render_form(entity, peid, rtype, role, divonclick=divonclick)
   464         self.render_form(entity, peid, rtype, role, i18nctx,
   467 
   465                          divonclick=divonclick)
   468     def render_form(self, entity, peid, rtype, role, **kwargs):
   466 
       
   467     def render_form(self, entity, peid, rtype, role, i18nctx, **kwargs):
   469         """fetch and render the form"""
   468         """fetch and render the form"""
   470         form = self.vreg['forms'].select('edition', self.req, entity=entity,
   469         form = self.vreg['forms'].select('edition', self.req, entity=entity,
   471                                          form_renderer_id='inline',
   470                                          form_renderer_id='inline',
   472                                          mainform=False, copy_nav_params=False)
   471                                          mainform=False, copy_nav_params=False)
   473         self.add_hiddens(form, entity, peid, rtype, role)
   472         self.add_hiddens(form, entity, peid, rtype, role)
   474         divid = '%s-%s-%s' % (peid, rtype, entity.eid)
   473         divid = '%s-%s-%s' % (peid, rtype, entity.eid)
   475         title = self.schema.rschema(rtype).display_name(self.req, role)
   474         title = self.req.pgettext(i18nctx, 'This %s' % entity.e_schema)
   476         removejs = self.removejs % (peid, rtype,entity.eid)
   475         removejs = self.removejs % (peid, rtype, entity.eid)
   477         countkey = '%s_count' % rtype
   476         countkey = '%s_count' % rtype
   478         try:
   477         try:
   479             self.req.data[countkey] += 1
   478             self.req.data[countkey] += 1
   480         except:
   479         except:
   481             self.req.data[countkey] = 1
   480             self.req.data[countkey] = 1
   482         self.w(form.form_render(divid=divid, title=title, removejs=removejs,
   481         self.w(form.form_render(divid=divid, title=title, removejs=removejs,
       
   482                                 i18nctx=i18nctx,
   483                                 counter=self.req.data[countkey], **kwargs))
   483                                 counter=self.req.data[countkey], **kwargs))
   484 
   484 
   485     def add_hiddens(self, form, entity, peid, rtype, role):
   485     def add_hiddens(self, form, entity, peid, rtype, role):
   486         # to ease overriding (see cubes.vcsfile.views.forms for instance)
   486         # to ease overriding (see cubes.vcsfile.views.forms for instance)
   487         if self.keep_entity(form, entity, peid, rtype):
   487         if self.keep_entity(form, entity, peid, rtype):
   509     id = 'inline-creation'
   509     id = 'inline-creation'
   510     __select__ = (match_kwargs('peid', 'rtype')
   510     __select__ = (match_kwargs('peid', 'rtype')
   511                   & specified_etype_implements('Any'))
   511                   & specified_etype_implements('Any'))
   512     removejs = "removeInlineForm('%s', '%s', '%s')"
   512     removejs = "removeInlineForm('%s', '%s', '%s')"
   513 
   513 
   514     def call(self, etype, peid, rtype, role='subject', **kwargs):
   514     def call(self, etype, peid, rtype, role, i18nctx, **kwargs):
   515         """
   515         """
   516         :param etype: the entity type being created in the inline form
   516         :param etype: the entity type being created in the inline form
   517         :param peid: the parent entity's eid hosting the inline form
   517         :param peid: the parent entity's eid hosting the inline form
   518         :param rtype: the relation bridging `etype` and `peid`
   518         :param rtype: the relation bridging `etype` and `peid`
   519         :param role: the role played by the `peid` in the relation
   519         :param role: the role played by the `peid` in the relation
   520         """
   520         """
   521         try:
   521         try:
   522             entity = self.vreg['etypes'].etype_class(etype)(self.req, None, None)
   522             cls = self.vreg['etypes'].etype_class(etype)
   523         except:
   523         except:
   524             self.w(self.req._('no such entity type %s') % etype)
   524             self.w(self.req._('no such entity type %s') % etype)
   525             return
   525             return
   526         self.initialize_varmaker()
   526         self.initialize_varmaker()
       
   527         entity = cls(self.req)
   527         entity.eid = self.varmaker.next()
   528         entity.eid = self.varmaker.next()
   528         self.render_form(entity, peid, rtype, role)
   529         self.render_form(entity, peid, rtype, role, i18nctx, **kwargs)