summaryrefslogtreecommitdiff
path: root/jimbrella/database.py
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@fkfd.me>2021-10-22 23:26:49 +0800
committerFrederick Yin <fkfd@fkfd.me>2021-10-22 23:28:09 +0800
commit64979b1dd30ba1eed531b071aaf74ce1aaa1d511 (patch)
tree6f17f4613f30502bb4aa9a51a62ae5f3edd84195 /jimbrella/database.py
parenta2059e127e4a41bc9d14e85527b834195da436c6 (diff)
Mark overdue umbrellas in Database
Diffstat (limited to 'jimbrella/database.py')
-rw-r--r--jimbrella/database.py16
1 files changed, 13 insertions, 3 deletions
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)