Do not add assignment if it already exists. 51/35651/1
authorasteroide <thomas.duval@orange.com>
Thu, 1 Jun 2017 09:43:11 +0000 (11:43 +0200)
committerasteroide <thomas.duval@orange.com>
Thu, 1 Jun 2017 09:43:11 +0000 (11:43 +0200)
Change-Id: Ic73d9db4823368bc8fb5f71b2b9b29af3d3ea1c7

moonv4/moon_db/moon_db/backends/sql.py

index b9ff332..d6becbb 100644 (file)
@@ -820,8 +820,9 @@ class PolicyConnector(BaseConnector, PolicyDriver):
             if ref:
                 old_ref = copy.deepcopy(ref.to_dict())
                 assignments = old_ref["assignments"]
-                assignments.append(data_id)
-                setattr(ref, "assignments", assignments)
+                if data_id not in assignments:
+                    assignments.append(data_id)
+                    setattr(ref, "assignments", assignments)
             else:
                 ref = SubjectAssignment.from_dict(
                     {
@@ -871,8 +872,9 @@ class PolicyConnector(BaseConnector, PolicyDriver):
             if ref:
                 old_ref = copy.deepcopy(ref.to_dict())
                 assignments = old_ref["assignments"]
-                assignments.append(data_id)
-                setattr(ref, "assignments", assignments)
+                if data_id not in assignments:
+                    assignments.append(data_id)
+                    setattr(ref, "assignments", assignments)
             else:
                 ref = ObjectAssignment.from_dict(
                     {
@@ -922,9 +924,9 @@ class PolicyConnector(BaseConnector, PolicyDriver):
             if ref:
                 old_ref = copy.deepcopy(ref.to_dict())
                 assignments = old_ref["assignments"]
-                assignments.append(data_id)
-                # FIXME (asteroide): the setattr doesn't work here ; the assignments is not updated in the database
-                setattr(ref, "assignments", assignments)
+                if data_id not in assignments:
+                    assignments.append(data_id)
+                    setattr(ref, "assignments", assignments)
             else:
                 ref = ActionAssignment.from_dict(
                     {