From: Mark Huang Date: Thu, 11 Jan 2007 05:39:16 +0000 (+0000) Subject: - remove unnecessary import of NodeGroups X-Git-Tag: pycurl-7_13_1~136 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=ba8bfd24db3793366200b105af53742727b63341;p=plcapi.git - remove unnecessary import of NodeGroups - list join_tables that reference sites - add peer_site_id - use Row.validate_timestamp - use Row.add_object and Row.remove_object --- diff --git a/PLC/Sites.py b/PLC/Sites.py index 1db5b13..479c0fb 100644 --- a/PLC/Sites.py +++ b/PLC/Sites.py @@ -9,9 +9,8 @@ from PLC.Table import Row, Table from PLC.Slices import Slice, Slices from PLC.PCUs import PCU, PCUs from PLC.Nodes import Node, Nodes -from PLC.NodeGroups import NodeGroup, NodeGroups from PLC.Addresses import Address, Addresses -import PLC.Persons +from PLC.Persons import Person, Persons class Site(Row): """ @@ -22,6 +21,7 @@ class Site(Row): table_name = 'sites' primary_key = 'site_id' + join_tables = ['person_site', 'site_address', 'peer_site'] fields = { 'site_id': Parameter(int, "Site identifier"), 'name': Parameter(str, "Full site name", max = 254), @@ -40,7 +40,8 @@ class Site(Row): 'address_ids': Parameter([int], "List of address identifiers"), 'pcu_ids': Parameter([int], "List of PCU identifiers"), 'node_ids': Parameter([int], "List of site node identifiers"), - 'peer_id': Parameter(int, "Peer at which this slice was created", nullok = True), + 'peer_id': Parameter(int, "Peer to which this site belongs", nullok = True), + 'peer_site_id': Parameter(int, "Foreign site identifier at peer", nullok = True), } # for Cache @@ -89,107 +90,14 @@ class Site(Row): return longitude - # timestamps - def validate_date_created (self, timestamp): - return self.validate_timestamp (timestamp) - def validate_last_updated (self, timestamp): - return self.validate_timestamp (timestamp) + validate_date_created = Row.validate_timestamp + validate_last_updated = Row.validate_timestamp - 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'] - - if person_id not in self['person_ids']: - assert site_id not in person['site_ids'] - - 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() - - self['person_ids'].append(person_id) - 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'] - - if person_id in self['person_ids']: - assert site_id in person['site_ids'] - - 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() - - self['person_ids'].remove(person_id) - person['site_ids'].remove(site_id) - - def add_address(self, address, commit = True): - """ - Add address to existing site. - """ - - assert 'site_id' in self - assert isinstance(address, Address) - assert 'address_id' in address - - site_id = self['site_id'] - address_id = address['address_id'] - - if address_id not in self['address_ids']: - self.api.db.do("INSERT INTO site_address (address_id, site_id)" \ - " VALUES(%(address_id)d, %(site_id)d)", - locals()) - - if commit: - self.api.db.commit() - - self['address_ids'].append(address_id) - - def remove_address(self, address, commit = True): - """ - Remove address from existing site. - """ - - assert 'site_id' in self - assert isinstance(address, Address) - assert 'address_id' in address - - site_id = self['site_id'] - address_id = address['address_id'] - - if address_id in self['address_ids']: - self.api.db.do("DELETE FROM site_address" \ - " WHERE address_id = %(address_id)d" \ - " AND site_id = %(site_id)d", - locals()) - - if commit: - self.api.db.commit() + add_person = Row.add_object(Person, 'person_site') + remove_person = Row.remove_object(Person, 'person_site') - self['address_ids'].remove(address_id) + add_address = Row.add_object(Address, 'site_address') + remove_address = Row.remove_object(Address, 'site_address') def delete(self, commit = True): """ @@ -200,7 +108,7 @@ class Site(Row): # Delete accounts of all people at the site who are not # members of at least one other non-deleted site. - persons = PLC.Persons.Persons(self.api, self['person_ids']) + persons = Persons(self.api, self['person_ids']) for person in persons: delete = True @@ -234,10 +142,9 @@ class Site(Row): node.delete(commit = False) # Clean up miscellaneous join tables - for table in ['person_site']: - self.api.db.do("DELETE FROM %s" \ - " WHERE site_id = %d" % \ - (table, self['site_id']), self) + for table in self.join_tables: + self.api.db.do("DELETE FROM %s WHERE site_id = %d" % \ + (table, self['site_id'])) # Mark as deleted self['deleted'] = True