--- a/web/formfields.py Fri Feb 12 16:13:43 2016 +0100
+++ b/web/formfields.py Tue Feb 16 19:18:37 2016 +0100
@@ -78,7 +78,7 @@
from yams.constraints import (SizeConstraint, StaticVocabularyConstraint,
FormatConstraint)
-from cubicweb import Binary, tags, uilib
+from cubicweb import Binary, tags, uilib, neg_role
from cubicweb.utils import support_args
from cubicweb.web import INTERNAL_FIELD_VALUE, ProcessFormError, eid_param, \
formwidgets as fw
@@ -1205,10 +1205,13 @@
else:
targetschema = rdef.subject
card = rdef.role_cardinality(role)
+ composite = getattr(rdef, 'composite', None)
kwargs['name'] = rschema.type
kwargs['role'] = role
kwargs['eidparam'] = True
- kwargs.setdefault('required', card in '1+')
+ # don't mark composite relation as required, we want the composite element
+ # to be removed when not linked to its parent
+ kwargs.setdefault('required', card in '1+' and composite != neg_role(role))
if role == 'object':
kwargs.setdefault('label', (eschema.type, rschema.type + '_object'))
else: