entity.py
branchstable
changeset 7200 81fd6e40a6a8
parent 7139 20807d3d7cf6
child 7206 2723c52a0795
child 7210 29cd85f20ccb
--- a/entity.py	Thu Apr 07 18:10:07 2011 +0200
+++ b/entity.py	Fri Apr 08 09:02:55 2011 +0200
@@ -261,8 +261,16 @@
         relations = []
         restrictions = set()
         pending_relations = []
+        eschema = cls.e_schema
         for attr, value in kwargs.items():
-            if isinstance(value, (tuple, list, set, frozenset)):
+            if attr.startswith('reverse_'):
+                attr = attr[len('reverse_'):]
+                role = 'object'
+            else:
+                role = 'subject'
+            assert eschema.has_relation(attr, role)
+            rschema = eschema.subjrels[attr] if role == 'subject' else eschema.objrels[attr]
+            if not rschema.final and isinstance(value, (tuple, list, set, frozenset)):
                 if len(value) == 1:
                     value = iter(value).next()
                 else: