diff -r b7ec030a5e10 -r c765adac7f5c entity.py --- a/entity.py Wed Oct 14 16:30:46 2009 +0200 +++ b/entity.py Wed Oct 14 17:45:49 2009 +0200 @@ -872,6 +872,20 @@ self.req.execute('SET %s WHERE X eid %%(x)s' % ','.join(relations), kwargs, 'x') + def set_relations(self, _cw_unsafe=False, **kwargs): + if _cw_unsafe: + execute = self.req.unsafe_execute + else: + execute = self.req.execute + for attr, values in kwargs.iteritems(): + if attr.startswith('reverse_'): + restr = 'Y %s X' % attr[len('reverse_'):] + else: + restr = 'X %s Y' % attr + execute('SET %s WHERE X eid %%(x)s, Y eid IN (%s)' % ( + restr, ','.join(str(r.eid) for r in values)), + {'x': self.eid}, 'x') + def delete(self): assert self.has_eid(), self.eid self.req.execute('DELETE %s X WHERE X eid %%(x)s' % self.e_schema,