diff --git a/loanpy/src/loan/request_loan.py b/loanpy/src/loan/request_loan.py index 15ecf67efd1dd9ba22f379f39c6a84d424802285..16eb783153a1cf292d81262d5c221a37efe27790 100755 --- a/loanpy/src/loan/request_loan.py +++ b/loanpy/src/loan/request_loan.py @@ -24,6 +24,7 @@ from __future__ import absolute_import import linkahead as db from caosadvancedtools.serverside.helper import get_timestamp, print_success +from linkahead.common.models import get_id_from_versionid, value_matches_versionid from .box_loan import (BORROWER, BOX, COMMENT, DESTINATION, EXHAUST_CONTENTS, EXPECTED_RETURN, F_BOX, F_COMMENT, F_DESTINATION, F_EMAIL, F_EXHAUST_CONTENTS, @@ -32,13 +33,17 @@ from .box_loan import (BORROWER, BOX, COMMENT, DESTINATION, EXHAUST_CONTENTS, EX insert_or_update_person, main, send_loan_request_mail) -def create_loan(box, borrower, expected_return, exhaust_contents, comment, - destination): +def create_loan(box, borrower, expected_return, exhaust_contents, comment, destination): """ Create a new loan record. """ + if isinstance(box, list): + ids = [get_id_from_versionid(val) if value_matches_versionid(val) else val for val in box] + ids = [str(val) for val in ids] + if len(ids) != len(set(ids)): + raise ValueError("The loan must not reference the same item twice") loan = db.Record().add_parent(LOAN) - - loan.add_property(BOX, box, datatype=(db.LIST(BOX.name) if isinstance(box, list) else BOX.name)) + loan.add_property(BOX, box, datatype=( + db.LIST(BOX.name) if isinstance(box, list) else BOX.name)) loan.add_property(BORROWER, borrower) loan.add_property(EXPECTED_RETURN, expected_return) loan.add_property(EXHAUST_CONTENTS, exhaust_contents)