web/formfields.py
changeset 11118 0c645f09d96a
parent 10012 8c2c6fdd8d56
parent 11065 c7dbd10648e6
child 11127 6464edfa95bb
equal deleted inserted replaced
11097:900c27ea30e9 11118:0c645f09d96a
    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)