X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fbase_topic.py;h=c8a7665e30be46ac463b47b794f3a49a9231be0d;hp=7c6c99071f64b247e3f2e12b1dbbd518e984dd9b;hb=ceb8baf31217c9d50ce7017beb25c59163d79b6e;hpb=cf042d30e8b7a1a9cbd1b2064e83c5d20ffcec9b diff --git a/osm_nbi/base_topic.py b/osm_nbi/base_topic.py index 7c6c990..c8a7665 100644 --- a/osm_nbi/base_topic.py +++ b/osm_nbi/base_topic.py @@ -61,7 +61,8 @@ class BaseTopic: alt_id_field = { "projects": "name", "users": "username", - "roles": "name" + "roles": "name", + "roles_operations": "name" } def __init__(self, db, fs, msg): @@ -73,7 +74,7 @@ class BaseTopic: @staticmethod def id_field(topic, value): """Returns ID Field for given topic and field value""" - if topic in ["projects", "users"] and not is_valid_uuid(value): + if topic in BaseTopic.alt_id_field.keys() and not is_valid_uuid(value): return BaseTopic.alt_id_field[topic] else: return "_id" @@ -192,7 +193,10 @@ class BaseTopic: :param _id: If not None, ignore this entry that are going to change :return: None or raises EngineException """ - _filter = self._get_project_filter(session) + if not self.multiproject: + _filter = {} + else: + _filter = self._get_project_filter(session) _filter["name"] = name if _id: _filter["_id.neq"] = _id @@ -288,7 +292,10 @@ class BaseTopic: :param _id: server internal id :return: dictionary, raise exception if not found. """ - filter_db = self._get_project_filter(session) + if not self.multiproject: + filter_db = {} + else: + filter_db = self._get_project_filter(session) # To allow project&user addressing by name AS WELL AS _id filter_db[BaseTopic.id_field(self.topic, _id)] = _id return self.db.get_one(self.topic, filter_db) @@ -315,8 +322,8 @@ class BaseTopic: """ if not filter_q: filter_q = {} - - filter_q.update(self._get_project_filter(session)) + if self.multiproject: + filter_q.update(self._get_project_filter(session)) # TODO transform data for SOL005 URL requests. Transform filtering # TODO implement "field-type" query string SOL005 @@ -371,7 +378,8 @@ class BaseTopic: # TODO add admin to filter, validate rights if not filter_q: filter_q = {} - filter_q.update(self._get_project_filter(session)) + if self.multiproject: + filter_q.update(self._get_project_filter(session)) return self.db.del_list(self.topic, filter_q) def delete_extra(self, session, _id, db_content): @@ -405,7 +413,8 @@ class BaseTopic: if dry_run: return None - filter_q.update(self._get_project_filter(session)) + if self.multiproject: + filter_q.update(self._get_project_filter(session)) if self.multiproject and session["project_id"]: # remove reference from project_read. If not last delete self.db.set_one(self.topic, filter_q, update_dict=None,