create() calls get_table()
[plcapi.git] / PLC / SiteTags.py
1 #
2 # Thierry Parmentelat - INRIA
3 #
4 from PLC.Faults import *
5 from PLC.Parameter import Parameter
6 from PLC.Filter import Filter
7 from PLC.Table import Row, Table
8 from PLC.Storage.AlchemyObj import AlchemyObj
9 from PLC.TagTypes import TagType, TagTypes
10 from PLC.Sites import Site
11
12 class SiteTag(AlchemyObj):
13     """
14     Representation of a row in the site_tag.
15     To use, instantiate with a dict of values.
16     """
17
18     table_name = 'site_tags'
19     fields = {
20         'site_tag_id': Parameter(int, "Site setting identifier", primary_key=True),
21         'site_id': Parameter(int, "Site identifier"),
22         'login_base': Parameter(str, "Site login base"),
23         'tag_type_id': Parameter(int, "Tag Type identifier"),
24         'tagname': Parameter(str, "Tag Name"),
25         'description': Parameter(str, "Description"),
26         'category': Parameter(str, "Category"),
27         'value': Parameter(str, "Site setting value"),
28         ### relations
29
30         }
31
32     def sync(self, insert=False, validate=True):
33         AlchemyObj.sync(self, insert, validate)
34         if insert == True or 'site_tag_id' not in self:
35             AlchemyObj.insert(self, dict(self))
36         else:
37             AlchemyObj.update(self, dict(self))  
38
39     def delete(self, commit=True):
40         AlchemyObj.delete(self, dict(self))
41
42 class SiteTags(list):
43     """
44     Representation of row(s) from the site_tag table in the
45     database.
46     """
47
48     def __init__(self, api, site_tag_filter = None, columns = None):
49         if not site_tag_filter:
50             site_tags = SiteTag().select()
51         if isinstance(site_tag_filter, (list, tuple, set, int, long)):
52             site_tags = SiteTag().select(filter={'site_tag_id': site_tag_filter})
53         elif isinstance(site_tag_filter, dict):
54             site_tags = SiteTag().select(filter=site_tag_filter)
55         else:
56             raise PLCInvalidArgument, "Wrong site setting filter %r"%site_tag_filter
57
58         for site_tag in site_tags:
59             self.append(site_tag)
60