# HG changeset patch # User Aurelien Campeas # Date 1247152609 -7200 # Node ID 8f00836580f102b43ae22656c73d7ee7fe73d9f3 # Parent 1d43aa551ba9d172ac4cafda39845967bc53f6b0 [reledit] do NOT propose to edit composite-related entities (unlinking would destroy the other side) diff -r 1d43aa551ba9 -r 8f00836580f1 utils.py --- a/utils.py Thu Jul 09 16:44:34 2009 +0200 +++ b/utils.py Thu Jul 09 17:16:49 2009 +0200 @@ -326,6 +326,14 @@ """ # XXX deprecated, no more necessary +def get_schema_property(eschema, rschema, role, property): + # XXX use entity.e_schema.role_rproperty(role, rschema, property, tschemas[0]) once yams > 0.23.0 is out + if role == 'subject': + targetschema = rschema.objects(eschema)[0] + return rschema.rproperty(eschema, targetschema, property) + targetschema = rschema.subjects(eschema)[0] + return rschema.rproperty(targetschema, eschema, property) + def compute_cardinality(eschema, rschema, role): if role == 'subject': targetschema = rschema.objects(eschema)[0] @@ -333,4 +341,3 @@ targetschema = rschema.subjects(eschema)[0] return rschema.rproperty(targetschema, eschema, 'cardinality')[1] - diff -r 1d43aa551ba9 -r 8f00836580f1 web/views/editforms.py --- a/web/views/editforms.py Thu Jul 09 16:44:34 2009 +0200 +++ b/web/views/editforms.py Thu Jul 09 17:16:49 2009 +0200 @@ -17,7 +17,7 @@ from cubicweb.selectors import (match_kwargs, one_line_rset, non_final_entity, specified_etype_implements, yes) -from cubicweb.utils import make_uid, compute_cardinality +from cubicweb.utils import make_uid, compute_cardinality, get_schema_property from cubicweb.view import EntityView from cubicweb.common import tags from cubicweb.web import INTERNAL_FIELD_VALUE, stdmsgs, eid_param @@ -137,6 +137,10 @@ elif role == 'object' and not rschema.has_perm(self.req, 'add', toeid=entity.eid): return self.w(value) + elif get_schema_property(entity.e_schema, + entity.schema.rschema(rtype), + role, 'composite'): + return self.w(value) form = self._build_relation_form(entity, value, rtype, role, reload, row, col, rvid, default, landing_zone) renderer = self.vreg.select_object('formrenderers', 'base', self.req, diff -r 1d43aa551ba9 -r 8f00836580f1 web/views/primary.py --- a/web/views/primary.py Thu Jul 09 16:44:34 2009 +0200 +++ b/web/views/primary.py Thu Jul 09 17:16:49 2009 +0200 @@ -117,19 +117,7 @@ def render_entity_attributes(self, entity, siderelations=None): for rschema, tschemas, role, dispctrl in self._section_def(entity, 'attributes'): - # don't use reledit as default vid for composite relation - if rschema.is_final(): - defaultvid = 'reledit' - # XXX use entity.e_schema.role_rproperty(role, rschema, 'composite', tschemas[0]) once yams > 0.23.0 is out - elif role == 'subject' and \ - rschema.rproperty(entity.e_schema, tschemas[0], 'composite'): - defaultvid = 'csv' - elif role == 'object' and \ - rschema.rproperty(tschemas[0], entity.e_schema, 'composite'): - defaultvid = 'csv' - else: - defaultvid = 'reledit' - vid = dispctrl.get('vid', defaultvid) + vid = dispctrl.get('vid', 'reledit') if rschema.is_final() or vid == 'reledit': value = entity.view(vid, rtype=rschema.type, role=role) else: