diff --git a/loanpy/integrationtests/basic_test.py b/loanpy/integrationtests/basic_test.py index dd3ef494e41df62821a81b7d9312259a33db469e..d34a61f6dfcd51a537ff289d8f607d3d6bbaa50b 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 22b0fc5359a5d5c79db9fc2ee74aa36396851b29..d12516cf2044071315d0a045725e94b45a64e76e 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 a435b454274f7260d0e2b118e87353b7dcd01d2b..9e5b9825e6de5cdf3f92a7740e18bd9e6e0646b8 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 7e0472339be4d653842d1d5192435f4ee16579ae..a2acab7bcb46a71c5a5419c66b1b604ad90e9047 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 5cb51f263963fde0bb30830e0bcfe9fdc3f8e2ee..15ecf67efd1dd9ba22f379f39c6a84d424802285 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 8b41f3042349556d82bcd41d9ad7606b0094b2e5..2b6bcc2748f33f5de6ac1e6b1e556b6127aeccd7 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")