Fix a bug when saving a perimeter element 45/34345/1
authorasteroide <thomas.duval@orange.com>
Fri, 28 Apr 2017 13:22:15 +0000 (15:22 +0200)
committerasteroide <thomas.duval@orange.com>
Fri, 28 Apr 2017 13:22:15 +0000 (15:22 +0200)
Change-Id: Ie274c020cb3f3a1776d10ca9850c5c424d693c5b

moonv4/moon_db/moon_db/backends/sql.py
moonv4/moon_manager/moon_manager/api/policies.py

index 6913211..5ab653a 100644 (file)
@@ -493,7 +493,7 @@ class PolicyConnector(BaseConnector, PolicyDriver):
                 if "policy_list" not in _value["value"] or type(_value["value"]["policy_list"]) is not list:
                     _value["value"]["policy_list"] = []
                 if policy_id and policy_id not in _value["value"]["policy_list"]:
-                    _value["value"]["policy_list"] = [policy_id, ]
+                    _value["value"]["policy_list"].append(policy_id)
                 new_subject = Subject.from_dict(_value)
                 # setattr(_subject, "value", _value["value"])
                 setattr(_subject, "value", getattr(new_subject, "value"))
@@ -560,7 +560,7 @@ class PolicyConnector(BaseConnector, PolicyDriver):
                 if "policy_list" not in _value["value"] or type(_value["value"]["policy_list"]) is not list:
                     _value["value"]["policy_list"] = []
                 if policy_id and policy_id not in _value["value"]["policy_list"]:
-                    _value["value"]["policy_list"] = [policy_id, ]
+                    _value["value"]["policy_list"].append(policy_id)
                 new_object = Object.from_dict(_value)
                 # setattr(_object, "value", _value["value"])
                 setattr(_object, "value", getattr(new_object, "value"))
@@ -627,7 +627,7 @@ class PolicyConnector(BaseConnector, PolicyDriver):
                 if "policy_list" not in _value["value"] or type(_value["value"]["policy_list"]) is not list:
                     _value["value"]["policy_list"] = []
                 if policy_id and policy_id not in _value["value"]["policy_list"]:
-                    _value["value"]["policy_list"] = [policy_id, ]
+                    _value["value"]["policy_list"].append(policy_id)
                 new_action = Action.from_dict(_value)
                 # setattr(_action, "value", _value["value"])
                 setattr(_action, "value", getattr(new_action, "value"))
index e2f332e..8b24247 100644 (file)
@@ -74,6 +74,12 @@ class Perimeter(object):
 
     def set_subject(self, ctx, args):
         try:
+            if not ctx["perimeter_id"]:
+                data = self.manager.get_subjects(user_id=ctx["user_id"], policy_id=None)
+                for data_id, data_value in data.items():
+                    if data_value['name'] == args['name']:
+                        ctx["perimeter_id"] = data_id
+                        break
             data = self.manager.add_subject(user_id=ctx["user_id"], policy_id=ctx["id"],
                                             perimeter_id=ctx["perimeter_id"], value=args)
         except Exception as e:
@@ -105,6 +111,11 @@ class Perimeter(object):
 
     def set_object(self, ctx, args):
         try:
+            data = self.manager.get_objects(user_id=ctx["user_id"], policy_id=None)
+            for data_id, data_value in data.items():
+                if data_value['name'] == args['name']:
+                    ctx["perimeter_id"] = data_id
+                    break
             data = self.manager.add_object(user_id=ctx["user_id"], policy_id=ctx["id"],
                                            perimeter_id=ctx["perimeter_id"], value=args)
         except Exception as e:
@@ -136,6 +147,11 @@ class Perimeter(object):
 
     def set_action(self, ctx, args):
         try:
+            data = self.manager.get_actions(user_id=ctx["user_id"], policy_id=None)
+            for data_id, data_value in data.items():
+                if data_value['name'] == args['name']:
+                    ctx["perimeter_id"] = data_id
+                    break
             data = self.manager.add_action(user_id=ctx["user_id"], policy_id=ctx["id"],
                                            perimeter_id=ctx["perimeter_id"], value=args)
         except Exception as e: