From: Mark Huang Date: Fri, 6 Oct 2006 19:07:33 +0000 (+0000) Subject: - add_person, remove_person: fix case when person is already part of/no longer X-Git-Tag: pycurl-7_13_1~652 X-Git-Url: http://git.onelab.eu/?p=plcapi.git;a=commitdiff_plain;h=84507e9f37868966f34f1184f902986b6004a812 - add_person, remove_person: fix case when person is already part of/no longer a part of the site --- diff --git a/PLC/Sites.py b/PLC/Sites.py index cb8d05e..b961ba7 100644 --- a/PLC/Sites.py +++ b/PLC/Sites.py @@ -95,17 +95,18 @@ class Site(Row): site_id = self['site_id'] person_id = person['person_id'] - self.api.db.do("INSERT INTO person_site (person_id, site_id)" \ - " VALUES(%(person_id)d, %(site_id)d)", - locals()) - if commit: - self.api.db.commit() + if person_id not in self['person_ids']: + assert site_id not in person['site_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 person_site (person_id, site_id)" \ + " VALUES(%(person_id)d, %(site_id)d)", + locals()) + + if commit: + self.api.db.commit() - if 'site_ids' in person and site_id not in person['site_ids']: + self['person_ids'].append(person_id) person['site_ids'].append(site_id) def remove_person(self, person, commit = True): @@ -119,18 +120,19 @@ class Site(Row): site_id = self['site_id'] person_id = person['person_id'] - self.api.db.do("DELETE FROM person_site" \ - " WHERE person_id = %(person_id)d" \ - " AND site_id = %(site_id)d", - locals()) - if commit: - self.api.db.commit() + if person_id in self['person_ids']: + assert site_id in person['site_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 person_site" \ + " WHERE person_id = %(person_id)d" \ + " AND site_id = %(site_id)d", + locals()) + + if commit: + self.api.db.commit() - if 'site_ids' in person and site_id in person['site_ids']: + self['person_ids'].remove(person_id) person['site_ids'].remove(site_id) def delete(self, commit = True):