X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fadmin_topics.py;h=7c98a34c14bc89bf88b551009b0f20d445ae7c00;hp=71fb83b5dde738d3bd1a2284d215d280643458ee;hb=4015b4734a923c29c04bf9b30f5a06604dd2f0a4;hpb=c5a18892d3b9e5a515c3adab0bafcdc097d9fe28 diff --git a/osm_nbi/admin_topics.py b/osm_nbi/admin_topics.py index 71fb83b..7c98a34 100644 --- a/osm_nbi/admin_topics.py +++ b/osm_nbi/admin_topics.py @@ -508,8 +508,9 @@ class UserTopicAuth(UserTopic): self.format_on_new(content, session["project_id"], make_public=session["public"]) _id = self.auth.create_user(content["username"], content["password"])["_id"] - for mapping in content["project_role_mappings"]: - self.auth.assign_role_to_user(_id, mapping["project"], mapping["role"]) + if "project_role_mappings" in content.keys(): + for mapping in content["project_role_mappings"]: + self.auth.assign_role_to_user(_id, mapping["project"], mapping["role"]) rollback.append({"topic": self.topic, "_id": _id}) del content["password"] @@ -734,6 +735,35 @@ class ProjectTopicAuth(ProjectTopic): return v return None + def edit(self, session, _id, indata=None, kwargs=None, content=None): + """ + Updates a project entry. + + :param session: contains "username", "admin", "force", "public", "project_id", "set_project" + :param _id: + :param indata: data to be inserted + :param kwargs: used to override the indata descriptor + :param content: + :return: _id: identity of the inserted data. + """ + indata = self._remove_envelop(indata) + + # Override descriptor with query string kwargs + if kwargs: + BaseTopic._update_input_with_kwargs(indata, kwargs) + try: + indata = self._validate_input_edit(indata, force=session["force"]) + + if not content: + content = self.show(session, _id) + self.check_conflict_on_edit(session, content, indata, _id=_id) + self.format_on_edit(content, indata) + + if "name" in indata: + self.auth.update_project(content["_id"], indata["name"]) + except ValidationError as e: + raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY) + class RoleTopicAuth(BaseTopic): topic = "roles_operations"