# # Functions for interacting with the network_types table in the database # # from types import StringTypes from PLC.Faults import * from PLC.Parameter import Parameter from PLC.Storage.AlchemyObject import AlchemyObj class NetworkType(AlchemyObj): """ Representation of a row in the network_types table. To use, instantiate with a dict of values. """ tablename = 'network_types' fields = { 'type': Parameter(str, "Network type", max = 20, primary_key=True), } def validate_type(self, name): # Make sure name is not blank if not len(name): raise PLCInvalidArgument, "Network type must be specified" # Make sure network type does not alredy exist conflicts = NetworkTypes(self.api, name) if conflicts: raise PLCInvalidArgument, "Network type name already in use" return name def sync(self, commit=True, validate=True): AlchemyObj.sync(self, commit=commit, validate=validate) AlchemyObj.insert(self, dict(self)) def delete(self, commit=True): assert 'type' in self AlchemyObj.delete(self, dict(self)) class NetworkTypes(list): """ Representation of the network_types table in the database. """ def __init__(self, api, types = None): if not types: network_types = NetworkType().select() elif isinstance(types, StringTypes): network_types = NetworkType().select({'type': types}) else: raise PLCInvalidArgument, "Wrong network type filter %r"%types self.extend(network_types)