From d678b1f5255f8e8fcfa72525e46e748eadf9a3f2 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Sun, 14 Jan 2024 03:55:36 +0100 Subject: [PATCH] cli: implement slabbedasker --- README.md | 2 +- worblehat/cli/main.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3b854cc..d831e44 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Run `poetry run worblehat --help` for more info - [ ] Ability to borrow and deliver multiple items at a time - [X] Ability to enter the queue for borrowing an item - [ ] Ability to extend a borrowing, only if no one is behind you in the queue -- [ ] Ability to list borrowed items which are overdue +- [X] Ability to list borrowed items which are overdue - [~] Ability to search for items - [ ] Ability to print PVV-specific labels for items missing a label, or which for any other reason needs a custom one - [X] Ascii art of monkey with fingers in eyes diff --git a/worblehat/cli/main.py b/worblehat/cli/main.py index f180351..05cc32b 100644 --- a/worblehat/cli/main.py +++ b/worblehat/cli/main.py @@ -171,6 +171,27 @@ class WorblehatCli(NumberedCmd): ).cmdloop() + def do_show_slabbedasker(self, _: str): + slubberter = self.sql_session.scalars( + select(BookcaseItemBorrowing) + .join(BookcaseItem) + .where( + BookcaseItemBorrowing.end_time < datetime.now(), + BookcaseItemBorrowing.delivered.is_(None), + ) + .order_by( + BookcaseItemBorrowing.end_time, + ), + ).all() + + if len(slubberter) == 0: + print('No slubberts found. Yay!') + return + + for slubbert in slubberter: + print(f'{slubbert.username} - {slubbert.item.name} - {slubbert.end_time.strftime("%Y-%m-%d")}') + + def do_advanced(self, _: str): AdvancedOptionsCli(self.sql_session).cmdloop() @@ -216,14 +237,18 @@ class WorblehatCli(NumberedCmd): 'doc': 'Show a bookcase, and its items', }, 4: { + 'f': do_show_slabbedasker, + 'doc': 'Show a slabbedasker, and their wicked ways', + }, + 5: { 'f': do_save, 'doc': 'Save changes', }, - 5: { + 6: { 'f': do_abort, 'doc': 'Abort changes', }, - 6: { + 7: { 'f': do_advanced, 'doc': 'Advanced options', },