From a8ae484b8e09d6447940e3a86fede39839c6d725 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Mon, 11 Mar 2013 08:36:54 -0400 Subject: [PATCH] Fix slice tags --- PLC/Methods/AddSliceTag.py | 4 ++++ PLC/SliceTags.py | 21 +++++++++++++++------ PLC/TagTypes.py | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/PLC/Methods/AddSliceTag.py b/PLC/Methods/AddSliceTag.py index ef78fa68..6d6b1e0b 100644 --- a/PLC/Methods/AddSliceTag.py +++ b/PLC/Methods/AddSliceTag.py @@ -76,6 +76,10 @@ class AddSliceTag(Method): slice_tag = SliceTag(self.api) slice_tag['slice_id'] = slice['slice_id'] slice_tag['tag_type_id'] = tag_type['tag_type_id'] + slice_tag['name'] = slice['name'] + slice_tag['tagname'] = tag_type['tagname'] + slice_tag['category'] = tag_type['category'] + slice_tag['description'] = tag_type['description'] slice_tag['value'] = unicode(value) # Sliver attribute if node is specified diff --git a/PLC/SliceTags.py b/PLC/SliceTags.py index b629772b..793fe338 100644 --- a/PLC/SliceTags.py +++ b/PLC/SliceTags.py @@ -41,6 +41,8 @@ class SliceTag(AlchemyObj): """ AlchemyObj.sync(self, commit, validate) AlchemyObj.insert(self, dict(self)) + slice_tag = AlchemyObj.select(self, dict(self))[0] + self['slice_tag_id'] = slice_tag['slice_tag_id'] def delete(self, commit = True): """ @@ -58,12 +60,19 @@ class SliceTags(list): def __init__(self, api, filter = None, columns = None): # the view that we're selecting upon: start with view_slices - if not filter: - slice_tags = SliceTags().select() - elif isinstance(filter, dict): - slices_tags = SliceTags().select(filter=filter) + if not tag_filter: + slice_tags = SliceTag().select() + elif isinstance(tag_filter, dict): + slice_tags = SliceTag().select(filter=tag_filter) + elif isinstance(tag_filter, int): + slice_tags = SliceTag().select(filter={'slice_tag_id': tag_filter}) + elif isinstance(tag_filter, (list, tuple, set)): + ints = filter(lambda x: isinstance(x, (int, long)), tag_filter) + strs = filter(lambda x: isinstance(x, StringTypes), tag_filter) + tag_filter = {'slice_tag_id': ints} + slice_tags = SliceTag().select(filter=tag_filter) else: - raise PLCInvalidArgument, "Wrong slice_tag filter %r"%filter + raise PLCInvalidArgument, "Wrong slice_tag filter %r"%tag_filter for slice_tag in slice_tags: - self.append(slice_tag) + self.append(SliceTag(api, object=slice_tag, columns=columns)) diff --git a/PLC/TagTypes.py b/PLC/TagTypes.py index 78cc56fc..30553e7e 100644 --- a/PLC/TagTypes.py +++ b/PLC/TagTypes.py @@ -48,7 +48,7 @@ class TagType (AlchemyObj): if insert == True or 'tag_type_id' not in self: AlchemyObj.insert(self, dict(self)) tag_type = AlchemyObj.select(self, filter={'tagname': self['tagname']}) - self['tag_type_id'] = tag_type['tag_type_id'] + self['tag_type_id'] = tag_type.tag_type_id else: AlchemyObj.update(self, dict(self)) -- 2.47.0