X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSliceAttributes.py;h=2788b72adb18dc277a4824b7e5083f1d1c273daa;hb=90a9c8342a4f5bcf02e6407dcf4ed1975ad15baf;hp=f7c3499c44fd08ab46266638260e65cf643183d4;hpb=4d883ec60af45bfde660e1428f42c97e36e9d750;p=plcapi.git diff --git a/PLC/SliceAttributes.py b/PLC/SliceAttributes.py index f7c3499c..2788b72a 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 @@ -31,16 +30,17 @@ class SliceAttributes(Table): database. """ - def __init__(self, api, slice_attribute_id_list = None): - 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)