2 # Functions for interacting with the network_types table in the database
5 from types import StringTypes
6 from PLC.Faults import *
7 from PLC.Parameter import Parameter
8 from PLC.Storage.AlchemyObject import AlchemyObj
10 class NetworkType(AlchemyObj):
12 Representation of a row in the network_types table. To use,
13 instantiate with a dict of values.
16 tablename = 'network_types'
18 'type': Parameter(str, "Network type", max = 20, primary_key=True),
21 def validate_type(self, name):
22 # Make sure name is not blank
24 raise PLCInvalidArgument, "Network type must be specified"
26 # Make sure network type does not alredy exist
27 conflicts = NetworkTypes(self.api, name)
29 raise PLCInvalidArgument, "Network type name already in use"
33 def sync(self, commit=True, validate=True):
34 AlchemyObj.sync(self, commit=commit, validate=validate)
35 AlchemyObj.insert(self, dict(self))
37 def delete(self, commit=True):
39 AlchemyObj.delete(self, dict(self))
41 class NetworkTypes(list):
43 Representation of the network_types table in the database.
46 def __init__(self, api, types = None):
48 network_types = NetworkType().select()
49 elif isinstance(types, StringTypes):
50 network_types = NetworkType().select({'type': types})
52 raise PLCInvalidArgument, "Wrong network type filter %r"%types
54 self.extend(network_types)