X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FTagTypes.py;h=f5524356b91c48fbbd9b639ee1fe9c37e3a63a08;hb=HEAD;hp=a7a3f4e11c3133fa3f9539f783fce4af31333eae;hpb=31b1d0a03ac448fdeb578dabf8f278bad3966516;p=plcapi.git diff --git a/PLC/TagTypes.py b/PLC/TagTypes.py index a7a3f4e..f552435 100644 --- a/PLC/TagTypes.py +++ b/PLC/TagTypes.py @@ -1,5 +1,3 @@ -# $Id$ -# $URL$ # # Thierry Parmentelat - INRIA # @@ -21,33 +19,31 @@ class TagType (Row): table_name = 'tag_types' primary_key = 'tag_type_id' - join_tables = ['node_tag', 'interface_tag', 'slice_tag', 'site_tag', 'person_tag' ] + join_tables = ['tag_type_role', 'node_tag', 'interface_tag', 'slice_tag', 'site_tag', 'person_tag' ] fields = { 'tag_type_id': Parameter(int, "Node tag type identifier"), 'tagname': Parameter(str, "Node tag type name", max = 100), 'description': Parameter(str, "Node tag type description", max = 254), 'category' : Parameter (str, "Node tag category", max=64, optional=True), - 'min_role_id': Parameter(int, "Minimum (least powerful) role that can set or change this attribute"), + 'role_ids': Parameter([int], "List of role identifiers"), + 'roles': Parameter([str], "List of roles"), } def validate_name(self, name): if not len(name): - raise PLCInvalidArgument, "node tag type name must be set" + raise PLCInvalidArgument, "tag type name must be set" conflicts = TagTypes(self.api, [name]) for tag_type in conflicts: if 'tag_type_id' not in self or \ self['tag_type_id'] != tag_type['tag_type_id']: - raise PLCInvalidArgument, "node tag type name already in use" + raise PLCInvalidArgument, "tag type name already in use" return name - def validate_min_role_id(self, role_id): - roles = [row['role_id'] for row in Roles(self.api)] - if role_id not in roles: - raise PLCInvalidArgument, "Invalid role" + add_role = Row.add_object(Role, 'tag_type_role') + remove_role = Row.remove_object(Role, 'tag_type_role') - return role_id class TagTypes(Table): """ @@ -58,7 +54,7 @@ class TagTypes(Table): def __init__(self, api, tag_type_filter = None, columns = None): Table.__init__(self, api, TagType, columns) - sql = "SELECT %s FROM tag_types WHERE True" % \ + sql = "SELECT %s FROM view_tag_types WHERE True" % \ ", ".join(self.columns) if tag_type_filter is not None: @@ -71,10 +67,13 @@ class TagTypes(Table): elif isinstance(tag_type_filter, dict): tag_type_filter = Filter(TagType.fields, tag_type_filter) sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND") - elif isinstance (tag_type_filter, StringTypes): - tag_type_filter = Filter(TagType.fields, {'tagname':[tag_type_filter]}) + elif isinstance(tag_type_filter, (int, long)): + tag_type_filter = Filter(TagType.fields, {'tag_type_id':tag_type_filter}) + sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND") + elif isinstance(tag_type_filter, StringTypes): + tag_type_filter = Filter(TagType.fields, {'tagname':tag_type_filter}) sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND") else: - raise PLCInvalidArgument, "Wrong node tag type filter %r"%tag_type_filter + raise PLCInvalidArgument, "Wrong tag type filter %r"%tag_type_filter self.selectall(sql)