Fix bug 715
[osm/NBI.git] / osm_nbi / admin_topics.py
index 924ebdd..b77bc91 100644 (file)
@@ -478,11 +478,13 @@ class UserTopicAuth(UserTopic):
 
         for project in content["projects"]:
             for role in project["roles"]:
-                project_role_mappings.append([project, role])
+                project_role_mappings.append({"project": project, "role": role})
         
         del content["projects"]
         content["project_role_mappings"] = project_role_mappings
 
+        return content
+
     def new(self, rollback, session, indata=None, kwargs=None, headers=None):
         """
         Creates a new entry into the authentication backend.
@@ -569,15 +571,15 @@ class UserTopicAuth(UserTopic):
                 for mapping in mappings_to_remove:
                     self.auth.remove_role_from_user(
                         user["name"], 
-                        mapping[0],
-                        mapping[1]
+                        mapping["project"],
+                        mapping["role"]
                     )
                 
                 for mapping in mappings_to_add:
                     self.auth.assign_role_to_user(
                         user["name"], 
-                        mapping[0],
-                        mapping[1]
+                        mapping["project"],
+                        mapping["role"]
                     )
 
             return content["_id"]
@@ -862,7 +864,13 @@ class RoleTopicAuth(BaseTopic):
         if not content["_admin"].get("created"):
             content["_admin"]["created"] = now
         content["_admin"]["modified"] = now
-        content[":"] = False
+        
+        if "." in content.keys():
+            content["root"] = content["."]
+            del content["."]
+        
+        if "root" not in content.keys():
+            content["root"] = False
 
         ignore_fields = ["_id", "_admin", "name"]
         content_keys = content.keys()
@@ -893,8 +901,12 @@ class RoleTopicAuth(BaseTopic):
         for role_def, value in edit_content.items():
             final_content[role_def.replace(".", ":")] = value
         
-        if ":" not in final_content.keys():
-            final_content[":"] = False
+        if ":" in final_content.keys():
+            final_content["root"] = final_content[":"]
+            del final_content[":"]
+        
+        if "root" not in final_content.keys():
+            final_content["root"] = False
 
     @staticmethod
     def format_on_show(content):