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) |