implement AddressAddressTypes, BootStates, ConfFiles, Ilinks, InitScripts
[plcapi.git] / PLC / AddressAddressTypes.py
1 #
2 # Functions for interacting with the address_types table in the database
3 #
4 # Mark Huang <mlhuang@cs.princeton.edu>
5 # Copyright (C) 2006 The Trustees of Princeton University
6 #
7
8 from types import StringTypes
9 from PLC.Faults import *
10 from PLC.Parameter import Parameter
11 from PLC.Storage.AlchemyObj import AlchemyObj
12
13 class AddressAddressType(AlchemyObj):
14     """
15     Representation of a row in the address_types table. To use,
16     instantiate with a dict of values.
17     """
18
19     tablename = 'address_types'
20     join_tables = ['address_address_type']
21     fields = {
22         'address_id': Parameter(int, "Address identifier"),
23         'address_type_id': Parameter(int, "Address type identifier"),
24         }
25
26
27     def sync(self, insert=False, validate=True):
28         AlchemyObj.sync(self, insert, validate):
29         AlchemyObj.insert(self, dict(self))
30
31
32     def delete(self, commit=True):
33         AlchemyObj.delete(self, dict(self))
34
35 class AddressAddressTypes(list):
36     """
37     Representation of the address_types table in the database.
38     """
39
40     def __init__(self, api, filter = None, columns = None):
41         if not filter:
42             address_types = AddressAddressType().select()
43         elif isinstance(address_type_filter, dict):
44             address_types = AddressAddressType().select(filter=filter)
45         else:
46             raise PLCInvalidArgument, "Wrong address address_type filter %r"filter
47
48         for address_type in address_types:
49             self.append(address_type)