# HG changeset patch # User Sylvain Thénault # Date 1266491616 -3600 # Node ID 1eeef3cbf52883700e3d43397ed172009214edaf # Parent 2f23148d087042122965d56cf087c9782b1dbadd fix 4626:c26b4df9fc90 (#703911): use can't rely on peid since it's not an actual eid when we're creating the parent entity diff -r 2f23148d0870 -r 1eeef3cbf528 web/data/cubicweb.edition.js --- a/web/data/cubicweb.edition.js Thu Feb 18 11:08:00 2010 +0100 +++ b/web/data/cubicweb.edition.js Thu Feb 18 12:13:36 2010 +0100 @@ -240,12 +240,13 @@ /* * makes an AJAX request to get an inline-creation view's content * @param peid : the parent entity eid + * @param petype : the parent entity type * @param ttype : the target (inlined) entity type * @param rtype : the relation type between both entities */ -function addInlineCreationForm(peid, ttype, rtype, role, i18nctx, insertBefore) { +function addInlineCreationForm(peid, petype, ttype, rtype, role, i18nctx, insertBefore) { insertBefore = insertBefore || getNode('add' + rtype + ':' + peid + 'link').parentNode; - var d = asyncRemoteExec('inline_creation_form', peid, ttype, rtype, role, i18nctx); + var d = asyncRemoteExec('inline_creation_form', peid, petype, ttype, rtype, role, i18nctx); d.addCallback(function (response) { var dom = getDomFromResponse(response); preprocessAjaxLoad(null, dom); diff -r 2f23148d0870 -r 1eeef3cbf528 web/views/autoform.py --- a/web/views/autoform.py Thu Feb 18 11:08:00 2010 +0100 +++ b/web/views/autoform.py Thu Feb 18 12:13:36 2010 +0100 @@ -169,14 +169,14 @@ :attr etype: the entity type being created in the inline form """ __regid__ = 'inline-creation' - __select__ = (match_kwargs('peid', 'rtype') + __select__ = (match_kwargs('peid', 'petype', 'rtype') & specified_etype_implements('Any')) + _select_attrs = InlineEntityEditionFormView._select_attrs + ('petype',) @property def removejs(self): entity = self._entity() - ttype = self._cw.entity_from_eid(self.peid).__regid__ - rdef = entity.e_schema.rdef(self.rtype, neg_role(self.role), ttype) + rdef = entity.e_schema.rdef(self.rtype, neg_role(self.role), self.petype) card= rdef.role_cardinality(self.role) # when one is adding an inline entity for a relation of a single card, # the 'add a new xxx' link disappears. If the user then cancel the addition, @@ -209,7 +209,7 @@ :attr card: the cardinality of the relation according to role of `peid` """ __regid__ = 'inline-addnew-link' - __select__ = (match_kwargs('peid', 'rtype') + __select__ = (match_kwargs('peid', 'petype', 'rtype') & specified_etype_implements('Any')) _select_attrs = InlineEntityCreationFormView._select_attrs + ('card',) @@ -220,8 +220,8 @@ divid = "addNew%s%s%s:%s" % (self.etype, self.rtype, self.role, self.peid) self.w(u'
' % divid) - js = "addInlineCreationForm('%s', '%s', '%s', '%s', '%s')" % ( - self.peid, self.etype, self.rtype, self.role, i18nctx) + js = "addInlineCreationForm('%s', '%s', '%s', '%s', '%s', '%s')" % ( + self.peid, self.petype, self.etype, self.rtype, self.role, i18nctx) if self.pform.should_hide_add_new_relation_link(self.rtype, self.card): js = "toggleVisibility('%s'); %s" % (divid, js) __ = self._cw.pgettext @@ -710,8 +710,9 @@ if self.should_display_add_new_relation_link(rschema, formviews, card): addnewlink = self._cw.vreg['views'].select( 'inline-addnew-link', self._cw, - etype=ttype, rtype=rschema, role=role, - peid=self.edited_entity.eid, pform=self, card=card) + etype=ttype, rtype=rschema, role=role, card=card, + peid=self.edited_entity.eid, + petype=self.edited_entity.e_schema, pform=self) formviews.append(addnewlink) allformviews += formviews return allformviews @@ -771,7 +772,9 @@ """ yield self._cw.vreg['views'].select('inline-creation', self._cw, etype=ttype, rtype=rschema, role=role, - peid=self.edited_entity.eid, pform=self) + peid=self.edited_entity.eid, + petype=self.edited_entity.e_schema, + pform=self) ## default form ui configuration ############################################## diff -r 2f23148d0870 -r 1eeef3cbf528 web/views/basecontrollers.py --- a/web/views/basecontrollers.py Thu Feb 18 11:08:00 2010 +0100 +++ b/web/views/basecontrollers.py Thu Feb 18 12:13:36 2010 +0100 @@ -383,10 +383,10 @@ @check_pageid @xhtmlize - def js_inline_creation_form(self, peid, ttype, rtype, role, i18nctx): + def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx): view = self._cw.vreg['views'].select('inline-creation', self._cw, - etype=ttype, peid=peid, rtype=rtype, - role=role) + etype=ttype, rtype=rtype, role=role, + peid=peid, petype=petype) return self._call_view(view, i18nctx=i18nctx) @jsonize