From 841cc8b6dfd74426fccf15eebe5bd2c123e5c52b Mon Sep 17 00:00:00 2001 From: Donkie Date: Sat, 9 Sep 2023 09:37:59 +0200 Subject: [PATCH] Added sort by remaining weight --- spoolman/database/spool.py | 7 ++++++- tests_integration/tests/spool/test_find.py | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/spoolman/database/spool.py b/spoolman/database/spool.py index e04538e..7d3a208 100644 --- a/spoolman/database/spool.py +++ b/spoolman/database/spool.py @@ -139,7 +139,12 @@ async def find( if sort_by is not None: for fieldstr, order in sort_by.items(): - field = parse_nested_field(models.Spool, fieldstr) + if fieldstr == "remaining_weight": + stmt = stmt.add_columns((models.Filament.weight - models.Spool.used_weight).label("remaining_weight")) + field = sqlalchemy.column("remaining_weight") + else: + field = parse_nested_field(models.Spool, fieldstr) + if order == SortOrder.ASC: stmt = stmt.order_by(field.asc()) elif order == SortOrder.DESC: diff --git a/tests_integration/tests/spool/test_find.py b/tests_integration/tests/spool/test_find.py index 34d3738..eef3e98 100644 --- a/tests_integration/tests/spool/test_find.py +++ b/tests_integration/tests/spool/test_find.py @@ -224,6 +224,7 @@ def test_find_all_spools_limit_asc_offset_outside_range(spools: Fixture): # noq "last_used", "filament_id", "used_weight", + "remaining_weight", "location", "lot_nr", "comment",