# HG changeset patch # User Sylvain Thénault # Date 1253555387 -7200 # Node ID 5aed5d6cd5d0a52f081813cf4ab65a84b659f84f # Parent 9ca73fbd3a58403412bc3ef596ae01d6604c952d# Parent 83aabc5e3de3308a461aab33ff04c0ed73853ac8 merge diff -r 83aabc5e3de3 -r 5aed5d6cd5d0 entities/schemaobjs.py --- a/entities/schemaobjs.py Mon Sep 21 19:16:10 2009 +0200 +++ b/entities/schemaobjs.py Mon Sep 21 19:49:47 2009 +0200 @@ -63,14 +63,18 @@ * raise ValidationError if inlining is'nt possible * eventually return True """ - rtype = self.name - rschema = self.schema.rschema(rtype) + rschema = self.schema.rschema(self.name) if inlined == rschema.inlined: return False if inlined: - for (stype, otype) in rschema.iter_rdefs(): - card = rschema.rproperty(stype, otype, 'cardinality')[0] + # don't use the persistent schema, we may miss cardinality changes + # in the same transaction + for rdef in self.reverse_relation_type: + card = rdef.cardinality[0] if not card in '?1': + rtype = self.name + stype = rdef.stype + otype = rdef.otype msg = self.req._("can't set inlined=%(inlined)s, " "%(stype)s %(rtype)s %(otype)s " "has cardinality=%(card)s") diff -r 83aabc5e3de3 -r 5aed5d6cd5d0 web/views/autoform.py --- a/web/views/autoform.py Mon Sep 21 19:16:10 2009 +0200 +++ b/web/views/autoform.py Mon Sep 21 19:49:47 2009 +0200 @@ -302,6 +302,13 @@ """ return not existant and card in '1+' or self.req.form.has_key('force_%s_display' % rschema) + def display_inline_creation_form(self, w, rschema, targettype, role, + i18nctx): + entity = self.edited_entity + w(self.view('inline-creation', None, etype=targettype, + peid=entity.eid, ptype=entity.e_schema, + rtype=rschema, role=role, i18nctx=i18nctx)) + def should_display_add_new_relation_link(self, rschema, existant, card): """return true if we should add a link to add a new creation form (through ajax call) diff -r 83aabc5e3de3 -r 5aed5d6cd5d0 web/views/editforms.py --- a/web/views/editforms.py Mon Sep 21 19:16:10 2009 +0200 +++ b/web/views/editforms.py Mon Sep 21 19:49:47 2009 +0200 @@ -526,4 +526,4 @@ self.initialize_varmaker() entity = cls(self.req) entity.eid = self.varmaker.next() - self.render_form(entity, peid, rtype, role, i18nctx) + self.render_form(entity, peid, rtype, role, i18nctx, **kwargs) diff -r 83aabc5e3de3 -r 5aed5d6cd5d0 web/views/formrenderers.py --- a/web/views/formrenderers.py Mon Sep 21 19:16:10 2009 +0200 +++ b/web/views/formrenderers.py Mon Sep 21 19:49:47 2009 +0200 @@ -508,9 +508,8 @@ # there is no related entity and we need at least one: we need to # display one explicit inline-creation view if form.should_display_inline_creation_form(rschema, existant, card): - w(form.view('inline-creation', None, etype=targettype, - peid=entity.eid, ptype=entity.e_schema, - rtype=rschema, role=role, i18nctx=i18nctx)) + form.display_inline_creation_form(w, rschema, targettype, + role, i18nctx) existant = True # we can create more than one related entity, we thus display a link # to add new related entities @@ -529,7 +528,6 @@ w(u'') - class EntityInlinedFormRenderer(EntityFormRenderer): """specific renderer for entity inlined edition form (inline-[creation|edition]) diff -r 83aabc5e3de3 -r 5aed5d6cd5d0 web/views/forms.py --- a/web/views/forms.py Mon Sep 21 19:16:10 2009 +0200 +++ b/web/views/forms.py Mon Sep 21 19:49:47 2009 +0200 @@ -531,7 +531,8 @@ break return result - def srelations_by_category(self, categories=None, permission=None): + def srelations_by_category(self, categories=None, permission=None, + strict=False): return () def should_display_add_new_relation_link(self, rschema, existant, card):