306 subjvar, objvar = 'Y', 'X' |
306 subjvar, objvar = 'Y', 'X' |
307 eid = entity.eid |
307 eid = entity.eid |
308 if x == 'object' or not rschema.inlined or not values: |
308 if x == 'object' or not rschema.inlined or not values: |
309 # this is not an inlined relation or no values specified, |
309 # this is not an inlined relation or no values specified, |
310 # explicty remove relations |
310 # explicty remove relations |
|
311 rql = 'DELETE %s %s %s WHERE X eid %%(x)s, Y eid %%(y)s' % ( |
|
312 subjvar, rschema, objvar) |
311 for reid in origvalues.difference(values): |
313 for reid in origvalues.difference(values): |
312 rql = 'DELETE %s %s %s WHERE X eid %%(x)s, Y eid %%(y)s' % ( |
|
313 subjvar, rschema, objvar) |
|
314 self.req.execute(rql, {'x': eid, 'y': reid}, ('x', 'y')) |
314 self.req.execute(rql, {'x': eid, 'y': reid}, ('x', 'y')) |
315 rql = 'SET %s %s %s WHERE X eid %%(x)s, Y eid %%(y)s' % ( |
315 seteids = values.difference(origvalues) |
316 subjvar, rschema, objvar) |
316 if seteids: |
317 for reid in values.difference(origvalues): |
317 rql = 'SET %s %s %s WHERE X eid %%(x)s, Y eid %%(y)s' % ( |
318 self.req.execute(rql, {'x': eid, 'y': reid}, ('x', 'y')) |
318 subjvar, rschema, objvar) |
|
319 for reid in seteids: |
|
320 self.req.execute(rql, {'x': eid, 'y': reid}, ('x', 'y')) |
319 |
321 |
320 def _get_eid(self, eid): |
322 def _get_eid(self, eid): |
321 # should be either an int (existant entity) or a variable (to be |
323 # should be either an int (existant entity) or a variable (to be |
322 # created entity) |
324 # created entity) |
323 assert eid or eid == 0, repr(eid) # 0 is a valid eid |
325 assert eid or eid == 0, repr(eid) # 0 is a valid eid |