X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSliceAttributes.py;h=2788b72adb18dc277a4824b7e5083f1d1c273daa;hb=34e1a55391f712d24f3932b98c7f26fcbd84baea;hp=dd911311d4e6d83d9b387d8f2bf6a79eada50469;hpb=fe0cd47e2b702d69bde8518a41e3661dd9ffbea7;p=plcapi.git diff --git a/PLC/SliceAttributes.py b/PLC/SliceAttributes.py index dd911311..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 @@ -25,42 +24,23 @@ class SliceAttribute(Row): 'value': Parameter(str, "Slice attribute value", max = 254), } - def __init__(self, api, fields = {}): - Row.__init__(self, fields) - self.api = api - - def delete(self, commit = True): - """ - Delete existing slice attribute. - """ - - assert 'slice_attribute_id' in self - - # Clean up miscellaneous join tables - for table in 'slice_attribute',: - self.api.db.do("DELETE FROM %s" \ - " WHERE slice_attribute_id = %d" % \ - (table, self['slice_attribute_id']), self) - - if commit: - self.api.db.commit() - -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)