projects
/
osm
/
NBI.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added coverage tests in tox
[osm/NBI.git]
/
osm_nbi
/
base_topic.py
diff --git
a/osm_nbi/base_topic.py
b/osm_nbi/base_topic.py
index
2986b81
..
daa7a6b
100644
(file)
--- a/
osm_nbi/base_topic.py
+++ b/
osm_nbi/base_topic.py
@@
-325,12
+325,23
@@
class BaseTopic:
update_content = update_content[kitem_old]
if isinstance(update_content, dict):
kitem_old = kitem
update_content = update_content[kitem_old]
if isinstance(update_content, dict):
kitem_old = kitem
+ if not isinstance(update_content.get(kitem_old), (dict, list)):
+ update_content[kitem_old] = {}
elif isinstance(update_content, list):
elif isinstance(update_content, list):
+ # key must be an index of the list, must be integer
kitem_old = int(kitem)
kitem_old = int(kitem)
+ # if index greater than list, extend the list
+ if kitem_old >= len(update_content):
+ update_content += [None] * (kitem_old - len(update_content) + 1)
+ if not isinstance(update_content[kitem_old], (dict, list)):
+ update_content[kitem_old] = {}
else:
raise EngineException(
"Invalid query string '{}'. Descriptor is not a list nor dict at '{}'".format(k, kitem))
else:
raise EngineException(
"Invalid query string '{}'. Descriptor is not a list nor dict at '{}'".format(k, kitem))
- update_content[kitem_old] = v if not yaml_format else safe_load(v)
+ if v is None:
+ del update_content[kitem_old]
+ else:
+ update_content[kitem_old] = v if not yaml_format else safe_load(v)
except KeyError:
raise EngineException(
"Invalid query string '{}'. Descriptor does not contain '{}'".format(k, kitem_old))
except KeyError:
raise EngineException(
"Invalid query string '{}'. Descriptor does not contain '{}'".format(k, kitem_old))
@@
-486,14
+497,14
@@
class BaseTopic:
# remove reference from project_read if there are more projects referencing it. If it last one,
# do not remove reference, but delete
other_projects_referencing = next((p for p in item_content["_admin"]["projects_read"]
# remove reference from project_read if there are more projects referencing it. If it last one,
# do not remove reference, but delete
other_projects_referencing = next((p for p in item_content["_admin"]["projects_read"]
- if p not in session["project_id"]), None)
+ if p not in session["project_id"]
and p != "ANY"
), None)
# check if there are projects referencing it (apart from ANY, that means, public)....
if other_projects_referencing:
# remove references but not delete
# check if there are projects referencing it (apart from ANY, that means, public)....
if other_projects_referencing:
# remove references but not delete
- update_dict_pull = {"_admin.projects_read
.{}".format(p): None for p in session["project_id"]}
- update_dict_pull.update({"_admin.projects_write.{}".format(p): None for p in session["project_id"]})
- self.db.set_one(self.topic, filter_q, update_dict=None, pull=update_dict_pull)
+ update_dict_pull = {"_admin.projects_read
": session["project_id"],
+ "_admin.projects_write": session["project_id"]}
+ self.db.set_one(self.topic, filter_q, update_dict=None, pull
_list
=update_dict_pull)
return None
else:
can_write = next((p for p in item_content["_admin"]["projects_write"] if p == "ANY" or
return None
else:
can_write = next((p for p in item_content["_admin"]["projects_write"] if p == "ANY" or