From 4d5e7fa1a906fe7ce2f87ff53e9842a056ca18c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Wed, 12 Mar 2025 13:40:47 +0100
Subject: [PATCH] MAINT: remove name overrides box borrowed/returned

---
 loanpy/integrationtests/basic_test.py  | 10 +++++-----
 loanpy/src/loan/box_loan.py            |  4 ++--
 loanpy/src/loan/conf.py                |  7 ++-----
 loanpy/src/loan/confirm_loan.py        |  2 +-
 loanpy/src/loan/default_config.ini     |  2 ++
 loanpy/src/loan/manual_return.py       |  6 +++---
 loanpy/unittests/test_manual_return.py | 10 +++++-----
 7 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/loanpy/integrationtests/basic_test.py b/loanpy/integrationtests/basic_test.py
index 448f0ef..36ddcfe 100644
--- a/loanpy/integrationtests/basic_test.py
+++ b/loanpy/integrationtests/basic_test.py
@@ -286,7 +286,7 @@ def test_request_loan_multiple_items(loan_form_data_multi):
     assert response.stderr is None, response.stderr
     assert response.code == 0
     loan = get_entity_by_id(loanid)
-    assert loan.get_property(BOX_BORROWED).value == box_versionids
+    assert loan.get_property(BOX_BORROWED.name).value == box_versionids
     assert loan.get_property(f"{LENT.name}").value.startswith("20")
     box1 = get_entity_by_name(TESTBOXNUMBER)
     box2 = get_entity_by_name(TESTBOXNUMBER2)
@@ -377,7 +377,7 @@ def test_direct_call(loan_form_data_multi):
     data[F_LOAN] = loan.id
     confirm_loan(data)
     loan = db.execute_query(f"FIND loan with {COMMENT.name}='{TESTLOANCOMMENT}'", unique=True)
-    assert loan.get_property(BOX_BORROWED).value == box_before_confirm_versionids
+    assert loan.get_property(BOX_BORROWED.name).value == box_before_confirm_versionids
     assert loan.get_property(f"{LENT.name}").value.startswith("20")
     box1 = get_entity_by_name(TESTBOXNUMBER)
     box2 = get_entity_by_name(TESTBOXNUMBER2)
@@ -418,8 +418,8 @@ def test_direct_call(loan_form_data_multi):
     loan = db.execute_query(f"FIND loan with {COMMENT.name}='{TESTLOANCOMMENT}'", unique=True)
     assert loan.get_property(f"{RETURNED.name}").value.startswith("20")
     assert loan.get_property(f"{RETURNED.name}").value.startswith("20")
-    assert loan.get_property(BOX_BORROWED).value == box_before_confirm_versionids
-    assert loan.get_property(BOX_RETURNED).value == box_before_return_versionids
+    assert loan.get_property(BOX_BORROWED.name).value == box_before_confirm_versionids
+    assert loan.get_property(BOX_RETURNED.name).value == box_before_return_versionids
 
 
 def modded_config(config):
@@ -448,7 +448,7 @@ def test_no_location_setting(loan_form_data_multi):
     data[F_LOAN] = loanid
     confirm_loan(data)
     loan = get_entity_by_id(loanid)
-    assert loan.get_property(BOX_BORROWED).value == box_versionids
+    assert loan.get_property(BOX_BORROWED.name).value == box_versionids
     assert loan.get_property(f"{LENT.name}").value.startswith("20")
     box1 = get_entity_by_name(TESTBOXNUMBER)
     box2 = get_entity_by_name(TESTBOXNUMBER2)
diff --git a/loanpy/src/loan/box_loan.py b/loanpy/src/loan/box_loan.py
index f810c49..37b9ef8 100644
--- a/loanpy/src/loan/box_loan.py
+++ b/loanpy/src/loan/box_loan.py
@@ -565,10 +565,10 @@ def get_borrowed_items_from(loan) -> db.Container:
     db.Container, borrowed items referenced by the given loan. Return value is a container with
     one element, even if only one item is referenced and the property value is not a list.
     """
-    borrowed = loan.get_property(BOX_BORROWED)
+    borrowed = loan.get_property(BOX_BORROWED.name)
     if borrowed is None:
         raise RuntimeError(
-            f"Loan has no reference to a borrowed item. {BOX_BORROWED} property is missing."
+            f"Loan has no reference to a borrowed item. {BOX_BORROWED.name} property is missing."
             f"Loan ID: {loan.id}")
     elif not isinstance(borrowed.value, list):
         borrowed = [borrowed.value]
diff --git a/loanpy/src/loan/conf.py b/loanpy/src/loan/conf.py
index 12faabd..a7c5e62 100644
--- a/loanpy/src/loan/conf.py
+++ b/loanpy/src/loan/conf.py
@@ -36,8 +36,5 @@ RETURN_REQUESTED = db.Property(name=ps['RETURN_REQUESTED'], datatype=db.DATETIME
 RETURN_ACCEPTED = db.Property(name=ps['RETURN_ACCEPTED'], datatype=db.DATETIME)
 RETURNED = db.Property(name=ps['RETURNED'], datatype=db.DATETIME)
 BOX_NUMBER = db.Property(name=ps['BOX_NUMBER'], datatype=db.TEXT)
-
-# Other Strings
-# TODO: Adapt datamodel and remove name override
-BOX_RETURNED = "Box (returned)"
-BOX_BORROWED = "Box (borrowed)"
+BOX_RETURNED = db.Property(name=ps['BOX_RETURNED'], datatype=rts['BOX'])
+BOX_BORROWED = db.Property(name=ps['BOX_BORROWED'], datatype=rts['BOX'])
diff --git a/loanpy/src/loan/confirm_loan.py b/loanpy/src/loan/confirm_loan.py
index 9e5b982..3ef14d5 100755
--- a/loanpy/src/loan/confirm_loan.py
+++ b/loanpy/src/loan/confirm_loan.py
@@ -33,7 +33,7 @@ from .box_loan import (BOX, BOX_BORROWED, DESTINATION, F_LOAN, LENT, S_LENT, S_L
 def _set_lent_box(loan):
     """ Store the exact versions of borrowed items when it was delivered to the borrower. """
     references = set_references_to_current_version(loan.get_property(BOX).value)
-    loan.add_property(id=BOX.id, name=BOX_BORROWED, value=references,
+    loan.add_property(id=BOX.id, name=BOX_BORROWED.name, value=references,
                       datatype=db.LIST(BOX.name) if isinstance(references, list) else BOX.name)
     loan.update()
 
diff --git a/loanpy/src/loan/default_config.ini b/loanpy/src/loan/default_config.ini
index 7b49b0f..c086fc8 100644
--- a/loanpy/src/loan/default_config.ini
+++ b/loanpy/src/loan/default_config.ini
@@ -23,3 +23,5 @@ RETURN_REQUESTED = returnRequested
 RETURN_ACCEPTED = returnAccepted
 RETURNED = returned
 BOX_NUMBER = Number
+BOX_RETURNED = returned Box version
+BOX_BORROWED = borrowed Box version
diff --git a/loanpy/src/loan/manual_return.py b/loanpy/src/loan/manual_return.py
index a2acab7..b82e600 100755
--- a/loanpy/src/loan/manual_return.py
+++ b/loanpy/src/loan/manual_return.py
@@ -36,8 +36,8 @@ def _set_returned_box(loan):
 
     This stores the version of the box that was returned by a borrower.
     """
-    references = set_references_to_current_version(loan.get_property(BOX_BORROWED).value)
-    loan.add_property(id=BOX.id, name=BOX_RETURNED, value=references,
+    references = set_references_to_current_version(loan.get_property(BOX_BORROWED.name).value)
+    loan.add_property(id=BOX.id, name=BOX_RETURNED.name, value=references,
                       datatype=db.LIST(BOX.name) if isinstance(references, list) else BOX.name)
 
 
@@ -57,7 +57,7 @@ def set_content(loan):
             and "entity_loan.no_content_updates" in config["Misc"]
             and config["Misc"]["entity_loan.no_content_updates"]):
         return
-    items = loan.get_property(BOX_BORROWED).value
+    items = loan.get_property(BOX_BORROWED.name).value
     if not isinstance(items, list):
         items = [items]
     for item in items:
diff --git a/loanpy/unittests/test_manual_return.py b/loanpy/unittests/test_manual_return.py
index f1753dd..2360515 100644
--- a/loanpy/unittests/test_manual_return.py
+++ b/loanpy/unittests/test_manual_return.py
@@ -5,14 +5,14 @@ from loan.manual_return import _set_returned_box
 
 def test_set_returned_box():
     loan = Record()
-    loan.add_property(BOX, name=BOX_BORROWED, value="1234@abcd")
+    loan.add_property(BOX, name=BOX_BORROWED.name, value="1234@abcd")
 
     assert len(loan.get_properties()) == 1
-    assert loan.get_property(BOX_BORROWED).value == "1234@abcd"
-    assert loan.get_property(BOX_RETURNED) is None
+    assert loan.get_property(BOX_BORROWED.name).value == "1234@abcd"
+    assert loan.get_property(BOX_RETURNED.name) is None
 
     _set_returned_box(loan)
 
     assert len(loan.get_properties()) == 2
-    assert loan.get_property(BOX_BORROWED).value == "1234@abcd"
-    assert loan.get_property(BOX_RETURNED).value == "1234@HEAD"
+    assert loan.get_property(BOX_BORROWED.name).value == "1234@abcd"
+    assert loan.get_property(BOX_RETURNED.name).value == "1234@HEAD"
-- 
GitLab