2 # Functions for interacting with the node_types table in the database
6 from PLC.Faults import *
7 from PLC.Parameter import Parameter
8 from PLC.Storage.AlchemyObject import AlchemyObj
10 class NodeType(AlchemyObj):
12 Representation of a row in the node_types table. To use,
13 instantiate with a dict of values.
16 tablename = 'node_types'
17 join_tables = ['nodes']
19 'node_type': Parameter(str, "Node type", max = 20, primary_key=True),
22 def validate_node_type(self, name):
23 # Make sure name is not blank
25 raise PLCInvalidArgument, "Node type must be specified"
27 # Make sure node type does not alredy exist
28 conflicts = NodeTypes(self.api, [name])
30 raise PLCInvalidArgument, "Node type name already in use"
34 def sync(self, commit=True, validate=True):
35 AlchemyObj.sync(self, commit=commit, validate=validate)
36 AlchemyObj.insert(self, dict(self))
38 def delete(self, commit=True):
39 assert 'node_type' in self
40 AlcemyObj.delete(self, dict(self))
42 class NodeTypes(list):
44 Representation of the node_types table in the database.
47 def __init__(self, api, node_types = None):
49 result = NodeType().select()
50 elif isinstance(node_types, (StringTypes, list, tuple, set)):
51 result = NodeType().select(filter={'node_type': node_types})
53 raise PLCInvalidArgument, "Wrong node type filter %r" % node_types