From 3643c5376b9e4d55c5718c9bd03c692ece2eb5cb Mon Sep 17 00:00:00 2001 From: asteroide Date: Thu, 1 Jun 2017 11:43:11 +0200 Subject: Do not add assignment if it already exists. Change-Id: Ic73d9db4823368bc8fb5f71b2b9b29af3d3ea1c7 --- moonv4/moon_db/moon_db/backends/sql.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'moonv4/moon_db/moon_db') diff --git a/moonv4/moon_db/moon_db/backends/sql.py b/moonv4/moon_db/moon_db/backends/sql.py index b9ff332c..d6becbbe 100644 --- a/moonv4/moon_db/moon_db/backends/sql.py +++ b/moonv4/moon_db/moon_db/backends/sql.py @@ -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( { -- cgit 1.2.3-korg