From 64979b1dd30ba1eed531b071aaf74ce1aaa1d511 Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Fri, 22 Oct 2021 23:26:49 +0800 Subject: Mark overdue umbrellas in Database --- jimbrella/database.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'jimbrella/database.py') diff --git a/jimbrella/database.py b/jimbrella/database.py index ffe5d2f..2b31356 100644 --- a/jimbrella/database.py +++ b/jimbrella/database.py @@ -1,7 +1,7 @@ import csv import os from datetime import datetime, timedelta -from .utils import human_datetime, human_timedelta +from .utils import human_datetime, human_timedelta, local_now from .config import DUE_HOURS from .exceptions import * @@ -169,7 +169,7 @@ class Database: - lent_time_ago_str: string representation for lent_time_ago. """ umbrellas = self._read() - now = datetime.now() + now = local_now() for idx, umb in enumerate(umbrellas): if umb["status"] in ("lent", "overdue"): umbrellas[idx]["lent_at_str"] = human_datetime(umb["lent_at"]) @@ -188,7 +188,7 @@ class Database: def find_overdue(umbrellas) -> list: """(static method) Returns umbrellas in possession of their tenant for too long.""" - now = datetime.now() + now = local_now() return [ umb for umb in umbrellas @@ -225,3 +225,13 @@ class Database: umb[key] = "" umb["lent_at"] = None self._update(umb) + + def mark_overdue(self, serial, date) -> None: + """When an umbrella is overdue, change its status to "overdue".""" + umb = self._find_by_serial(serial) + if umb is None: + raise UmbrellaNotFoundError + elif umb["status"] != "lent": + raise UmbrellaStatusError + umb["status"] = "overdue" + self._update(umb) -- cgit v1.2.3