From bae2881ed65c968198492514df6c1f127dd89d98 Mon Sep 17 00:00:00 2001 From: Miguel Gonzalez Date: Wed, 14 Mar 2018 14:42:11 +0100 Subject: [PATCH] Do not include items which does not change --- taiga/projects/services/bulk_update_order.py | 5 +++++ tests/unit/test_order_updates.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/taiga/projects/services/bulk_update_order.py b/taiga/projects/services/bulk_update_order.py index 093c97e8..4f201927 100644 --- a/taiga/projects/services/bulk_update_order.py +++ b/taiga/projects/services/bulk_update_order.py @@ -36,6 +36,7 @@ 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() + original_orders = {k:v for k,v in base_orders.items()} # Remove the elements from new_orders non existint in base_orders invalid_keys = new_orders.keys() - base_orders.keys() @@ -68,6 +69,10 @@ def apply_order_updates(base_orders: dict, new_orders: dict): removing_keys = [id for id in base_orders if id not in updated_order_ids] [base_orders.pop(id, None) for id in removing_keys] + # Remove elements that are equal to the original + common_keys = original_orders.keys() & base_orders.keys() + [base_orders.pop(id, None) for id in common_keys if base_orders[id] == original_orders[id]] + def update_projects_order_in_bulk(bulk_data: list, field: str, user): """ diff --git a/tests/unit/test_order_updates.py b/tests/unit/test_order_updates.py index 3609ff01..b0fdae5b 100644 --- a/tests/unit/test_order_updates.py +++ b/tests/unit/test_order_updates.py @@ -155,8 +155,6 @@ def test_apply_order_updates_multiple_elements_duplicated_orders(): } apply_order_updates(orders, new_orders) assert orders == { - "c": 3, - "d": 3, "a": 4, "e": 5, "f": 6 @@ -180,9 +178,18 @@ def test_apply_order_invalid_new_order(): } apply_order_updates(orders, new_orders) assert orders == { - "c": 3, - "d": 3, "a": 4, "e": 5, "f": 6 } + + +def test_apply_order_not_include_noop(): + orders = { + "a": 1, + } + new_orders = { + "a": 1, + } + apply_order_updates(orders, new_orders) + assert orders == {}