equal
deleted
inserted
replaced
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) ) |