# HG changeset patch # User Sylvain Thénault # Date 1302246175 -7200 # Node ID 81fd6e40a6a8e844b2106538bbd17543787abc4c # Parent 589801acf08e7199fce37b4e69a14c88c5a39ac8 [entity creation] ensure this is a relation and not an attribute before moving things into pending_relations because value is a list Using a list for attributes may be used for later type specific casting (e.g. timeseries) diff -r 589801acf08e -r 81fd6e40a6a8 entity.py --- 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: