cubicweb/web/formfields.py
changeset 11129 97095348b3ee
parent 11127 6464edfa95bb
parent 11057 0b59724cb3f2
child 11131 2dafcdd19c99
--- a/cubicweb/web/formfields.py	Thu Feb 11 21:59:49 2016 +0100
+++ b/cubicweb/web/formfields.py	Wed Feb 17 13:45:34 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: