From cc1dade8f969e0b15211410dfa510ed9cc34104c Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Fri, 29 Oct 2021 14:50:20 +0800 Subject: Database does not keep admin log, checks returner identity --- jimbrella/database.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'jimbrella') diff --git a/jimbrella/database.py b/jimbrella/database.py index b8522ab..a8d480b 100644 --- a/jimbrella/database.py +++ b/jimbrella/database.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta from .csv_table import CsvTable -from .admin_log import AdminLog from .utils import human_datetime, human_timedelta from .config import DUE_HOURS, ADMIN_LOG_PATH from .exceptions import * @@ -61,7 +60,6 @@ class Database(CsvTable): }, ], ) - self.admin_log = AdminLog(ADMIN_LOG_PATH) def _find_by_serial(self, serial: int) -> dict: """Given a serial number, returns an umbrella with such serial. @@ -201,7 +199,7 @@ class Database(CsvTable): umb = self._find_by_serial(serial) if umb is None: raise UmbrellaNotFoundError(serial) - elif umb["status"] != "available": + if umb["status"] != "available": raise UmbrellaStatusError umb["status"] = "lent" umb["tenant_name"] = tenant_name @@ -210,16 +208,20 @@ class Database(CsvTable): umb["tenant_email"] = tenant_email umb["lent_at"] = date self._update(umb) - self.admin_log.log("TAKEAWAY", umb) - def give_back(self, serial) -> None: - """When a user has returned an umbrella.""" + def give_back(self, serial, tenant_name, tenant_id) -> None: + """When a user has returned an umbrella. + + `tenant_name` and `tenant_id` are used to verify if the umbrella is returned by the same + person who borrowed it. + """ umb = self._find_by_serial(serial) if umb is None: raise UmbrellaNotFoundError(serial) - elif umb["status"] not in ("lent", "overdue"): + if umb["status"] not in ("lent", "overdue"): raise UmbrellaStatusError - self.admin_log.log("GIVEBACK", umb) + if umb["tenant_name"] != tenant_name or umb["tenant_id"] != tenant_id: + raise TenantIdentityError(umb["tenant_name"], tenant_name) umb["status"] = "available" for key in ["tenant_name", "tenant_id", "tenant_phone", "tenant_email"]: umb[key] = "" @@ -235,4 +237,3 @@ class Database(CsvTable): raise UmbrellaStatusError umb["status"] = "overdue" self._update(umb) - self.admin_log.log("OVERDUE", umb) -- cgit v1.2.3