76 |
76 |
77 from yams.schema import KNOWN_METAATTRIBUTES, role_name |
77 from yams.schema import KNOWN_METAATTRIBUTES, role_name |
78 from yams.constraints import (SizeConstraint, StaticVocabularyConstraint, |
78 from yams.constraints import (SizeConstraint, StaticVocabularyConstraint, |
79 FormatConstraint) |
79 FormatConstraint) |
80 |
80 |
81 from cubicweb import Binary, tags, uilib |
81 from cubicweb import Binary, tags, uilib, neg_role |
82 from cubicweb.utils import support_args |
82 from cubicweb.utils import support_args |
83 from cubicweb.web import INTERNAL_FIELD_VALUE, ProcessFormError, eid_param, \ |
83 from cubicweb.web import INTERNAL_FIELD_VALUE, ProcessFormError, eid_param, \ |
84 formwidgets as fw |
84 formwidgets as fw |
85 from cubicweb.web.views import uicfg |
85 from cubicweb.web.views import uicfg |
86 |
86 |
1203 if rdef.get('internationalizable'): |
1203 if rdef.get('internationalizable'): |
1204 kwargs.setdefault('internationalizable', True) |
1204 kwargs.setdefault('internationalizable', True) |
1205 else: |
1205 else: |
1206 targetschema = rdef.subject |
1206 targetschema = rdef.subject |
1207 card = rdef.role_cardinality(role) |
1207 card = rdef.role_cardinality(role) |
|
1208 composite = getattr(rdef, 'composite', None) |
1208 kwargs['name'] = rschema.type |
1209 kwargs['name'] = rschema.type |
1209 kwargs['role'] = role |
1210 kwargs['role'] = role |
1210 kwargs['eidparam'] = True |
1211 kwargs['eidparam'] = True |
1211 kwargs.setdefault('required', card in '1+') |
1212 # don't mark composite relation as required, we want the composite element |
|
1213 # to be removed when not linked to its parent |
|
1214 kwargs.setdefault('required', card in '1+' and composite != neg_role(role)) |
1212 if role == 'object': |
1215 if role == 'object': |
1213 kwargs.setdefault('label', (eschema.type, rschema.type + '_object')) |
1216 kwargs.setdefault('label', (eschema.type, rschema.type + '_object')) |
1214 else: |
1217 else: |
1215 kwargs.setdefault('label', (eschema.type, rschema.type)) |
1218 kwargs.setdefault('label', (eschema.type, rschema.type)) |
1216 kwargs.setdefault('help', rdef.description) |
1219 kwargs.setdefault('help', rdef.description) |