entity.py
changeset 7206 2723c52a0795
parent 7177 0f2905cbe443
parent 7200 81fd6e40a6a8
child 7216 6053bf221fa9
equal deleted inserted replaced
7198:2e25b97c0bef 7206:2723c52a0795
   261         """
   261         """
   262         rql = 'INSERT %s X' % cls.__regid__
   262         rql = 'INSERT %s X' % cls.__regid__
   263         relations = []
   263         relations = []
   264         restrictions = set()
   264         restrictions = set()
   265         pending_relations = []
   265         pending_relations = []
       
   266         eschema = cls.e_schema
   266         for attr, value in kwargs.items():
   267         for attr, value in kwargs.items():
   267             if isinstance(value, (tuple, list, set, frozenset)):
   268             if attr.startswith('reverse_'):
       
   269                 attr = attr[len('reverse_'):]
       
   270                 role = 'object'
       
   271             else:
       
   272                 role = 'subject'
       
   273             assert eschema.has_relation(attr, role)
       
   274             rschema = eschema.subjrels[attr] if role == 'subject' else eschema.objrels[attr]
       
   275             if not rschema.final and isinstance(value, (tuple, list, set, frozenset)):
   268                 if len(value) == 1:
   276                 if len(value) == 1:
   269                     value = iter(value).next()
   277                     value = iter(value).next()
   270                 else:
   278                 else:
   271                     del kwargs[attr]
   279                     del kwargs[attr]
   272                     pending_relations.append( (attr, value) )
   280                     pending_relations.append( (attr, value) )