web/formfields.py
changeset 11122 fedcb69982af
parent 11118 0c645f09d96a
child 11127 6464edfa95bb
equal deleted inserted replaced
11053:ec44983e047c 11122:fedcb69982af
    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)