cubicweb/web/formfields.py
changeset 11129 97095348b3ee
parent 11127 6464edfa95bb
parent 11057 0b59724cb3f2
child 11131 2dafcdd19c99
equal deleted inserted replaced
11128:9b4de34ad394 11129:97095348b3ee
    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)