web/views/editcontroller.py
branchtls-sprint
changeset 1798 cc86fe8efaaa
parent 1765 a25c7c73c8f6
child 1802 d628defebc17
equal deleted inserted replaced
1797:c2a80130b06d 1798:cc86fe8efaaa
   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