web/uicfg.py
changeset 4003 b9436fe77c9e
parent 3890 d7a270f50f54
child 4007 91d11fda4aa0
--- a/web/uicfg.py	Thu Dec 03 17:17:43 2009 +0100
+++ b/web/uicfg.py	Mon Dec 07 05:09:09 2009 -0800
@@ -233,12 +233,13 @@
     return result
 
 def _card_and_comp(sschema, rschema, oschema, role):
+    rdef = rschema.rdef(sschema, oschema)
     if role == 'subject':
-        card = rschema.rproperty(sschema, oschema, 'cardinality')[0]
-        composed = rschema.rproperty(sschema, oschema, 'composite') == 'object'
+        card = rdef.cardinality[0]
+        composed = not rschema.final and rdef.composite == 'object'
     else:
-        card = rschema.rproperty(sschema, oschema, 'cardinality')[1]
-        composed = rschema.rproperty(sschema, oschema, 'composite') == 'subject'
+        card = rdef.cardinality[1]
+        composed = not rschema.final and rdef.composite == 'subject'
     return card, composed
 
 class AutoformSectionRelationTags(RelationTagsSet):
@@ -356,12 +357,12 @@
             _targetschemas = []
             for tschema in targetschemas:
                 if not rtags.etype_get(eschema, rschema, role, tschema) in categories:
-                        continue
-                    rdef = rschema.role_rdef(eschema, tschema, role)
-                    if not ((not strict and rdef.has_local_role(permission)) or
-                            rdef.has_perm(entity.req, permission, fromeid=eid)):
-                        continue
-                    _targetschemas.append(tschema)
+                    continue
+                rdef = rschema.role_rdef(eschema, tschema, role)
+                if not ((not strict and rdef.has_local_role(permission)) or
+                        rdef.has_perm(entity.req, permission, fromeid=eid)):
+                    continue
+                _targetschemas.append(tschema)
             if not _targetschemas:
                 continue
             targetschemas = _targetschemas