Do not include items which does not change

remotes/origin/3.4.0rc
Miguel Gonzalez 2018-03-14 14:42:11 +01:00
parent 92368c38c4
commit bae2881ed6
2 changed files with 16 additions and 4 deletions

View File

@ -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):
"""

View File

@ -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 == {}