832 assert role |
832 assert role |
833 self._related_cache.pop('%s_%s' % (rtype, role), None) |
833 self._related_cache.pop('%s_%s' % (rtype, role), None) |
834 |
834 |
835 # raw edition utilities ################################################### |
835 # raw edition utilities ################################################### |
836 |
836 |
837 def set_attributes(self, **kwargs): |
837 def set_attributes(self, _cw_unsafe=False, **kwargs): |
838 assert kwargs |
838 assert kwargs |
839 relations = [] |
839 relations = [] |
840 for key in kwargs: |
840 for key in kwargs: |
841 relations.append('X %s %%(%s)s' % (key, key)) |
841 relations.append('X %s %%(%s)s' % (key, key)) |
842 # update current local object |
842 # update current local object |
843 self.update(kwargs) |
843 self.update(kwargs) |
844 # and now update the database |
844 # and now update the database |
845 kwargs['x'] = self.eid |
845 kwargs['x'] = self.eid |
846 self.req.execute('SET %s WHERE X eid %%(x)s' % ','.join(relations), |
846 if _cw_unsafe: |
847 kwargs, 'x') |
847 self.req.unsafe_execute( |
|
848 'SET %s WHERE X eid %%(x)s' % ','.join(relations), kwargs, 'x') |
|
849 else: |
|
850 self.req.execute('SET %s WHERE X eid %%(x)s' % ','.join(relations), |
|
851 kwargs, 'x') |
848 |
852 |
849 def delete(self): |
853 def delete(self): |
850 assert self.has_eid(), self.eid |
854 assert self.has_eid(), self.eid |
851 self.req.execute('DELETE %s X WHERE X eid %%(x)s' % self.e_schema, |
855 self.req.execute('DELETE %s X WHERE X eid %%(x)s' % self.e_schema, |
852 {'x': self.eid}) |
856 {'x': self.eid}) |