From 7deec282d3c37aac8d4a83e2a0b7a51b2ad7ce85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com> Date: Thu, 30 Jan 2025 10:11:52 +0100 Subject: [PATCH] ENH: added a check that a loan does not reference the same box twice --- loanpy/src/loan/request_loan.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/loanpy/src/loan/request_loan.py b/loanpy/src/loan/request_loan.py index 15ecf67..16eb783 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) -- GitLab