From 2ff5821b43283253cc977f67061ed8ffd3d743f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com> Date: Wed, 29 Jan 2025 10:59:03 +0100 Subject: [PATCH] FIX: datatype of reference and messages in GUI --- loanpy/integrationtests/basic_test.py | 2 +- loanpy/src/loan/accept_return_request.py | 4 ++-- loanpy/src/loan/confirm_loan.py | 2 +- loanpy/src/loan/manual_return.py | 6 ++++-- loanpy/src/loan/request_loan.py | 12 ++++++++++-- loanpy/unittests/test_request_loan.py | 2 -- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/loanpy/integrationtests/basic_test.py b/loanpy/integrationtests/basic_test.py index dd3ef49..d34a61f 100644 --- a/loanpy/integrationtests/basic_test.py +++ b/loanpy/integrationtests/basic_test.py @@ -117,7 +117,7 @@ def loan_form_data_single(base_loan_form_data): @fixture() def loan_form_data_multi(base_loan_form_data): base_loan_form_data[F_BOX] = [ - get_entity_by_name(TESTBOXNUMBER).id, + str(get_entity_by_name(TESTBOXNUMBER).id), # strings are allowed get_entity_by_name(TESTBOXNUMBER2).id] return base_loan_form_data diff --git a/loanpy/src/loan/accept_return_request.py b/loanpy/src/loan/accept_return_request.py index 22b0fc5..d12516c 100755 --- a/loanpy/src/loan/accept_return_request.py +++ b/loanpy/src/loan/accept_return_request.py @@ -26,7 +26,7 @@ from __future__ import absolute_import import caosdb as db from caosadvancedtools.serverside.helper import get_timestamp, print_success -from .box_loan import (BOX_BORROWED, CONTENT, F_LOAN, RETURN_ACCEPTED, RETURNLOCATION, +from .box_loan import (BOX, CONTENT, F_LOAN, RETURN_ACCEPTED, RETURNLOCATION, S_RETURN_ACCEPTED, S_RETURN_REQUESTED, get_borrower_names, get_loan, main, set_location_of_borrowed_items, set_property, update_loan_state) @@ -66,7 +66,7 @@ def accept_return_request(data): and config["Misc"]["entity_loan.no_content_updates"])) _accept_return_request(loan, location_updates=location_updates) fn, ln = get_borrower_names(loan) - box_id = loan.get_property(BOX_BORROWED).value + box_id = loan.get_property(BOX).value if not isinstance(box_id, list): box_id = [box_id] diff --git a/loanpy/src/loan/confirm_loan.py b/loanpy/src/loan/confirm_loan.py index a435b45..9e5b982 100755 --- a/loanpy/src/loan/confirm_loan.py +++ b/loanpy/src/loan/confirm_loan.py @@ -70,7 +70,7 @@ def confirm_loan(data): loan = _confirm_loan(data) fn, ln = get_borrower_names(loan) loan = get_loan(data[F_LOAN]) - box_id = loan.get_property(BOX_BORROWED).value + box_id = loan.get_property(BOX).value if not isinstance(box_id, list): box_id = [box_id] diff --git a/loanpy/src/loan/manual_return.py b/loanpy/src/loan/manual_return.py index 7e04723..a2acab7 100755 --- a/loanpy/src/loan/manual_return.py +++ b/loanpy/src/loan/manual_return.py @@ -96,12 +96,14 @@ def manual_return(data): loan = _manual_return(data) fn, ln = get_borrower_names(loan) loan = get_loan(data[F_LOAN]) - box_id = loan.get_property(BOX_BORROWED) + box_id = loan.get_property(BOX).value + if not isinstance(box_id, list): + box_id = [box_id] print_success('The box borrowed by {fn} {ln} '.format(fn=fn, ln=ln) + 'has been returned and the Box Location has been updated.' '<a href="/Entity/{bid}" title="Reload this page.">Reload</a> ' - 'to view the new Location.<br>'.format(bid=box_id)) + 'to view the new Location.<br>'.format(bid="&".join([str(el) for el in box_id]))) return 0 diff --git a/loanpy/src/loan/request_loan.py b/loanpy/src/loan/request_loan.py index 5cb51f2..15ecf67 100755 --- a/loanpy/src/loan/request_loan.py +++ b/loanpy/src/loan/request_loan.py @@ -69,9 +69,17 @@ def _set_defaults(data): def _check_data(data): for field in _OBLIGATORY: assert_key_in_data(data, field) - if not (isinstance(data[F_BOX], int) or isinstance(data[F_BOX], list)): + items = data[F_BOX] + if not isinstance(items, list): + items = [items] + bad_references = [] + for item in items: + if not (isinstance(item, int) or item.isnumeric()): + bad_references.append(item) + if bad_references: raise ValueError( - f"the value of {F_BOX} has the wrong type. It should be int or list of ints") + f"The following value(s) of {F_BOX} has/have the wrong type. It should be " + f"integers or string representations thereof.\n{bad_references}") assert_date_in_future( data[F_EXPECTED_RETURN_DATE], ("The expected return date needs to be in the future." diff --git a/loanpy/unittests/test_request_loan.py b/loanpy/unittests/test_request_loan.py index 8b41f30..2b6bcc2 100644 --- a/loanpy/unittests/test_request_loan.py +++ b/loanpy/unittests/test_request_loan.py @@ -28,5 +28,3 @@ def test_create_loan(): assert loan.get_property(EXHAUST_CONTENTS.name).value is False assert loan.get_property(COMMENT.name).value == "blablabla" assert loan.get_property(DESTINATION.name).value == "my office" - - create_loan(1234, borrower, "2020-03-23", False, "blablabla", "my office") -- GitLab