a1f2b6f80efc3e3e78bf1a763d81c4b217dc8159
[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.AlchemyObject import AlchemyObj
9 from PLC.TagTypes import TagType, TagTypes
10
11 class SiteTag(AlchemyObj):
12     """
13     Representation of a row in the site_tag.
14     To use, instantiate with a dict of values.
15     """
16
17     table_name = 'site_tags'
18     fields = {
19         'site_tag_id': Parameter(int, "Site setting identifier", primary_key=True),
20         'site_id': Parameter(int, "Site identifier"),
21         'login_base': Parameter(str, "Site login base"),
22         'tag_type_id': Parameter(int, "Tag Type identifier"),
23         'tagname': Parameter(str, "Tag Name"),
24         'description': Parameter(str, "Description"),
25         'category': Parameter(str, "Category"),
26         'value': Parameter(str, "Site setting value"),
27         ### relations
28
29         }
30
31     def sync(self, insert=False, validate=True):
32         AlchemyObj.sync(self, insert, validate)
33         if insert == True or 'site_tag_id' not in self:
34             AlchemyObj.insert(self, dict(self))
35         else:
36             AlchemyObj.update(self, dict(self))  
37
38     def delete(self, commit=True):
39         AlchemyObj.delete(self, dict(self))
40
41 class SiteTags(list):
42     """
43     Representation of row(s) from the site_tag table in the
44     database.
45     """
46
47     def __init__(self, api, site_tag_filter = None, columns = None):
48         from PLC.Sites import Site
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