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