From 25d0df2c73067b69bda924b8ddd0514d7fed5a51 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Fri, 6 Oct 2006 19:08:26 +0000 Subject: [PATCH 1/1] - add_person, remove_person, add_node, remove_node: fix case when person/node is already part of/no longer a part of the slice --- PLC/Slices.py | 72 +++++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/PLC/Slices.py b/PLC/Slices.py index cc5cfce..adfdd44 100644 --- a/PLC/Slices.py +++ b/PLC/Slices.py @@ -94,17 +94,18 @@ class Slice(Row): slice_id = self['slice_id'] person_id = person['person_id'] - self.api.db.do("INSERT INTO slice_person (person_id, slice_id)" \ - " VALUES(%(person_id)d, %(slice_id)d)", - locals()) - if commit: - self.api.db.commit() + if person_id not in self['person_ids']: + assert slice_id not in person['slice_ids'] - if 'person_ids' in self and person_id not in self['person_ids']: - self['person_ids'].append(person_id) + self.api.db.do("INSERT INTO slice_person (person_id, slice_id)" \ + " VALUES(%(person_id)d, %(slice_id)d)", + locals()) + + if commit: + self.api.db.commit() - if 'slice_ids' in person and slice_id not in person['slice_ids']: + self['person_ids'].append(person_id) person['slice_ids'].append(slice_id) def remove_person(self, person, commit = True): @@ -118,18 +119,19 @@ class Slice(Row): slice_id = self['slice_id'] person_id = person['person_id'] - self.api.db.do("DELETE FROM slice_person" \ - " WHERE person_id = %(person_id)d" \ - " AND slice_id = %(slice_id)d", - locals()) - if commit: - self.api.db.commit() + if person_id in self['person_ids']: + assert slice_id in person['slice_ids'] - if 'person_ids' in self and person_id in self['person_ids']: - self['person_ids'].remove(person_id) + self.api.db.do("DELETE FROM slice_person" \ + " WHERE person_id = %(person_id)d" \ + " AND slice_id = %(slice_id)d", + locals()) + + if commit: + self.api.db.commit() - if 'slice_ids' in person and slice_id in person['slice_ids']: + self['person_ids'].remove(person_id) person['slice_ids'].remove(slice_id) def add_node(self, node, commit = True): @@ -143,17 +145,18 @@ class Slice(Row): slice_id = self['slice_id'] node_id = node['node_id'] - self.api.db.do("INSERT INTO slice_node (node_id, slice_id)" \ - " VALUES(%(node_id)d, %(slice_id)d)", - locals()) - if commit: - self.api.db.commit() + if node_id not in self['node_ids']: + assert slice_id not in node['slice_ids'] - if 'node_ids' in self and node_id not in self['node_ids']: - self['node_ids'].append(node_id) + self.api.db.do("INSERT INTO slice_node (node_id, slice_id)" \ + " VALUES(%(node_id)d, %(slice_id)d)", + locals()) + + if commit: + self.api.db.commit() - if 'slice_ids' in node and slice_id not in node['slice_ids']: + self['node_ids'].append(node_id) node['slice_ids'].append(slice_id) def remove_node(self, node, commit = True): @@ -167,18 +170,19 @@ class Slice(Row): slice_id = self['slice_id'] node_id = node['node_id'] - self.api.db.do("DELETE FROM slice_node" \ - " WHERE node_id = %(node_id)d" \ - " AND slice_id = %(slice_id)d", - locals()) - if commit: - self.api.db.commit() + if node_id in self['node_ids']: + assert slice_id in node['slice_ids'] - if 'node_ids' in self and node_id in self['node_ids']: - self['node_ids'].remove(node_id) + self.api.db.do("DELETE FROM slice_node" \ + " WHERE node_id = %(node_id)d" \ + " AND slice_id = %(slice_id)d", + locals()) + + if commit: + self.api.db.commit() - if 'slice_ids' in node and slice_id in node['slice_ids']: + self['node_ids'].remove(node_id) node['slice_ids'].remove(slice_id) def delete(self, commit = True): -- 2.43.0