X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSliceAttributes.py;h=2788b72adb18dc277a4824b7e5083f1d1c273daa;hb=6aa8cb5c67607bbd3d2eda19007b48b3c65ef39f;hp=2494acf60aa69392af15c50673008bb96f247805;hpb=5dc283f954f5a2b82429aa0c5d5d8c5fc64eefac;p=plcapi.git diff --git a/PLC/SliceAttributes.py b/PLC/SliceAttributes.py index 2494acf..2788b72 100644 --- a/PLC/SliceAttributes.py +++ b/PLC/SliceAttributes.py @@ -1,7 +1,6 @@ -from types import StringTypes - from PLC.Faults import * from PLC.Parameter import Parameter +from PLC.Filter import Filter from PLC.Table import Row, Table from PLC.SliceAttributeTypes import SliceAttributeType, SliceAttributeTypes @@ -25,22 +24,23 @@ class SliceAttribute(Row): 'value': Parameter(str, "Slice attribute value", max = 254), } -class SliceAttributes(dict): +class SliceAttributes(Table): """ Representation of row(s) from the slice_attribute table in the database. """ - def __init__(self, api, slice_attribute_id_list): - self.api = api + def __init__(self, api, slice_attribute_filter = None, columns = None): + Table.__init__(self, api, SliceAttribute, columns) - sql = "SELECT %s FROM view_slice_attributes" % \ - ", ".join(SliceAttribute.fields) + sql = "SELECT %s FROM view_slice_attributes WHERE True" % \ + ", ".join(self.columns) - if slice_attribute_id_list: - sql += " WHERE slice_attribute_id IN (%s)" % ", ".join(map(str, slice_attribute_id_list)) + if slice_attribute_filter is not None: + if isinstance(slice_attribute_filter, (list, tuple, set)): + slice_attribute_filter = Filter(SliceAttribute.fields, {'slice_attribute_id': slice_attribute_filter}) + elif isinstance(slice_attribute_filter, dict): + slice_attribute_filter = Filter(SliceAttribute.fields, slice_attribute_filter) + sql += " AND (%s)" % slice_attribute_filter.sql(api) - rows = self.api.db.selectall(sql) - - for row in rows: - self[row['slice_attribute_id']] = SliceAttribute(api, row) + self.selectall(sql)