+ def add_person(self, person, commit = True):
+ """
+ Add person to existing site.
+ """
+
+ assert 'site_id' in self
+ assert isinstance(person, PLC.Persons.Person)
+ assert 'person_id' in person
+
+ 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_ids' in self and person_id not in self['person_ids']:
+ self['person_ids'].append(person_id)
+
+ if 'site_ids' in person and site_id not in person['site_ids']:
+ person['site_ids'].append(site_id)
+
+ def remove_person(self, person, commit = True):
+ """
+ Remove person from existing site.
+ """
+
+ assert 'site_id' in self
+ assert isinstance(person, PLC.Persons.Person)
+ assert 'person_id' in person
+
+ 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_ids' in self and person_id in self['person_ids']:
+ self['person_ids'].remove(person_id)
+
+ if 'site_ids' in person and site_id in person['site_ids']:
+ person['site_ids'].remove(site_id)
+