400 for tagkey in tag.iterkeys(): |
400 for tagkey in tag.iterkeys(): |
401 assert tagkey in self._keys, 'tag %r not in accepted tags: %r' % (tag, self._keys) |
401 assert tagkey in self._keys, 'tag %r not in accepted tags: %r' % (tag, self._keys) |
402 return super(ReleditTags, self).tag_relation(key, tag) |
402 return super(ReleditTags, self).tag_relation(key, tag) |
403 |
403 |
404 def init_reledit_ctrl(rtag, sschema, rschema, oschema, role): |
404 def init_reledit_ctrl(rtag, sschema, rschema, oschema, role): |
405 if rschema.final: |
|
406 return |
|
407 composite = rschema.rdef(sschema, oschema).composite == role |
|
408 if role == 'subject': |
|
409 oschema = '*' |
|
410 else: |
|
411 sschema = '*' |
|
412 values = rtag.get(sschema, rschema, oschema, role) |
405 values = rtag.get(sschema, rschema, oschema, role) |
413 edittarget = values.get('edit_target') |
406 if not rschema.final: |
414 if edittarget not in (None, 'rtype', 'related'): |
407 composite = rschema.rdef(sschema, oschema).composite == role |
415 rtag.warning('reledit: wrong value for edit_target on relation %s: %s', |
408 if role == 'subject': |
416 rschema, edittarget) |
409 oschema = '*' |
417 edittarget = None |
410 else: |
418 if not edittarget: |
411 sschema = '*' |
419 edittarget = 'related' if composite else 'rtype' |
412 edittarget = values.get('edit_target') |
420 rtag.tag_relation((sschema, rschema, oschema, role), |
413 if edittarget not in (None, 'rtype', 'related'): |
421 {'edit_target': edittarget}) |
414 rtag.warning('reledit: wrong value for edit_target on relation %s: %s', |
|
415 rschema, edittarget) |
|
416 edittarget = None |
|
417 if not edittarget: |
|
418 edittarget = 'related' if composite else 'rtype' |
|
419 rtag.tag_relation((sschema, rschema, oschema, role), |
|
420 {'edit_target': edittarget}) |
422 if not 'novalue_include_rtype' in values: |
421 if not 'novalue_include_rtype' in values: |
423 showlabel = primaryview_display_ctrl.get( |
422 showlabel = primaryview_display_ctrl.get( |
424 sschema, rschema, oschema, role).get('showlabel', True) |
423 sschema, rschema, oschema, role).get('showlabel', True) |
425 rtag.tag_relation((sschema, rschema, oschema, role), |
424 rtag.tag_relation((sschema, rschema, oschema, role), |
426 {'novalue_include_rtype': not showlabel}) |
425 {'novalue_include_rtype': not showlabel}) |