From fa193be2d3531f77a6daa2455a34fdd70ff07ce3 Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Fri, 9 Jun 2017 14:27:50 +0000 Subject: [PATCH] Task #10898: do not allow task_id or resource_id of claim to be changed --- .../radb/sql/add_functions_and_triggers.sql | 10 ++++++++++ .../ResourceAssignmentDatabase/tests/t_radb.py | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb/sql/add_functions_and_triggers.sql b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb/sql/add_functions_and_triggers.sql index 8e6515d8234..e8389aeea5d 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb/sql/add_functions_and_triggers.sql +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb/sql/add_functions_and_triggers.sql @@ -634,6 +634,16 @@ BEGIN IF NEW.status_id = claim_claimed_status_id AND OLD.claim_size <> NEW.claim_size THEN RAISE EXCEPTION 'cannot update claim size on claimed claim; old:% new:%', OLD, NEW; END IF; + + -- bounce any task_id updates + IF OLD.task_id <> NEW.task_id THEN + RAISE EXCEPTION 'cannot change the task to which a claim belongs; old:% new:%', OLD, NEW; + END IF; + + -- bounce any resource_id updates + IF OLD.resource_id <> NEW.resource_id THEN + RAISE EXCEPTION 'cannot change the resource to which a claim belongs; old:% new:%', OLD, NEW; + END IF; END IF; --only check claim if status and/or claim_size and/or start/end time changed diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py index d4307e04c4e..156a34b6802 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py @@ -1119,6 +1119,13 @@ class ResourceAssignmentDatabaseTest(unittest.TestCase): self.assertEqual(set([task_id1]), set(t['id'] for t in self.radb.get_conflicting_overlapping_tasks(t2_claim_ids[0]))) + #try to connect this claim to task1, should fail + self.assertFalse(self.radb.updateResourceClaims(t2_claim_ids, task_id=task_id1)) + self.assertEqual(task_id2, t2_claims[0]['task_id']) + + #try to connect this claim to other resource, should fail + self.assertFalse(self.radb.updateResourceClaims(t2_claim_ids, resource_id=118)) + self.assertEqual(117, t2_claims[0]['resource_id']) # try to update the task status to scheduled, should not succeed, since it's claims are not 'claimed' yet. self.assertFalse(self.radb.updateTask(task_id2, task_status='scheduled')) -- GitLab