From eeee1efa709050c08fcef50289d3fc274947ba7b Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 11 Oct 2016 09:49:07 +0200 Subject: [PATCH] [Backport] Fixing apply_order_updates method --- taiga/projects/services/bulk_update_order.py | 5 ++++ tests/unit/test_order_updates.py | 25 ++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/taiga/projects/services/bulk_update_order.py b/taiga/projects/services/bulk_update_order.py index 614fd507..c07b48a2 100644 --- a/taiga/projects/services/bulk_update_order.py +++ b/taiga/projects/services/bulk_update_order.py @@ -36,6 +36,11 @@ def apply_order_updates(base_orders: dict, new_orders: dict): The elements where no order update is needed will be removed. """ updated_order_ids = set() + + # Remove the elements from new_orders non existint in base_orders + invalid_keys = new_orders.keys() - base_orders.keys() + [new_orders.pop(id, None) for id in invalid_keys] + # We will apply the multiple order changes by the new position order sorted_new_orders = [(k, v) for k, v in new_orders.items()] sorted_new_orders = sorted(sorted_new_orders, key=lambda e: e[1]) diff --git a/tests/unit/test_order_updates.py b/tests/unit/test_order_updates.py index 1a4a571c..3f9625aa 100644 --- a/tests/unit/test_order_updates.py +++ b/tests/unit/test_order_updates.py @@ -161,3 +161,28 @@ def test_apply_order_updates_multiple_elements_duplicated_orders(): "e": 5, "f": 6 } + + +def test_apply_order_invalid_new_order(): + orders = { + "a": 1, + "b": 2, + "c": 3, + "d": 3, + "e": 3, + "f": 4 + } + new_orders = { + "c": 3, + "d": 3, + "x": 3, + "a": 4 + } + apply_order_updates(orders, new_orders) + assert orders == { + "c": 3, + "d": 3, + "a": 4, + "e": 5, + "f": 6 + }