Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
10bffd53e8
|
|||
|
a91aa3c617
|
|||
|
779312cd9f
|
|||
|
fb89b86dba
|
@@ -3,7 +3,7 @@ debug = true
|
|||||||
debug_sql = false
|
debug_sql = false
|
||||||
|
|
||||||
[database]
|
[database]
|
||||||
# One of (sqlite, postgres)
|
# One of (sqlite, postgresql)
|
||||||
type = 'sqlite'
|
type = 'sqlite'
|
||||||
|
|
||||||
[database.sqlite]
|
[database.sqlite]
|
||||||
@@ -38,3 +38,6 @@ dryrun = false
|
|||||||
warn_days_before_borrowing_deadline = [ 5, 1 ]
|
warn_days_before_borrowing_deadline = [ 5, 1 ]
|
||||||
days_before_queue_position_expires = 14
|
days_before_queue_position_expires = 14
|
||||||
warn_days_before_expiring_queue_position_deadline = [ 3, 1 ]
|
warn_days_before_expiring_queue_position_deadline = [ 3, 1 ]
|
||||||
|
|
||||||
|
[general]
|
||||||
|
quit_allowed = true
|
||||||
|
|||||||
Generated
+4
-4
@@ -7,11 +7,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769338528,
|
"lastModified": 1780178524,
|
||||||
"narHash": "sha256-t18ZoSt9kaI1yde26ok5s7aFLkap1Q9+/2icVh2zuaE=",
|
"narHash": "sha256-2PcNyNqbGCWBpAMdCU1HxSQmhQiG6evdjxVnPA7w5bQ=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "7218348163fd8d84df4a6f682c634793e67a3fed",
|
"rev": "2406de41ce9d0a1404cbf4e55537e3f720f37f23",
|
||||||
"revCount": 13,
|
"revCount": 15,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/libdib.git"
|
"url": "https://git.pvv.ntnu.no/Projects/libdib.git"
|
||||||
},
|
},
|
||||||
|
|||||||
+33
-43
@@ -16,6 +16,7 @@ from worblehat.models import *
|
|||||||
from worblehat.services import (
|
from worblehat.services import (
|
||||||
create_bookcase_item_from_isbn,
|
create_bookcase_item_from_isbn,
|
||||||
is_valid_isbn,
|
is_valid_isbn,
|
||||||
|
Config,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .subclis import (
|
from .subclis import (
|
||||||
@@ -47,26 +48,13 @@ class WorblehatCli(NumberedCmd):
|
|||||||
self.sql_session_dirty = False
|
self.sql_session_dirty = False
|
||||||
self.prompt_header = None
|
self.prompt_header = None
|
||||||
|
|
||||||
@classmethod
|
def run_with_safe_exit_wrapper(self) -> None:
|
||||||
def run_with_safe_exit_wrapper(cls, sql_session: Session) -> None:
|
|
||||||
tool = cls(sql_session)
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
tool.cmdloop()
|
self.cmdloop()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
if not tool.sql_session_dirty:
|
print("\n\n-----------------\n")
|
||||||
exit(0)
|
self.do_exit("Exit")
|
||||||
try:
|
|
||||||
print()
|
|
||||||
if prompt_yes_no(
|
|
||||||
"Are you sure you want to exit without saving?",
|
|
||||||
default=False,
|
|
||||||
):
|
|
||||||
raise KeyboardInterrupt
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
if tool.sql_session is not None:
|
|
||||||
tool.sql_session.rollback()
|
|
||||||
exit(0)
|
|
||||||
|
|
||||||
def do_show_bookcase(self, arg: str) -> None:
|
def do_show_bookcase(self, arg: str) -> None:
|
||||||
bookcase_selector = InteractiveItemSelector(
|
bookcase_selector = InteractiveItemSelector(
|
||||||
@@ -133,35 +121,36 @@ class WorblehatCli(NumberedCmd):
|
|||||||
"""),
|
"""),
|
||||||
)
|
)
|
||||||
|
|
||||||
print("Please select the bookcase where the item is placed:")
|
with self.sql_session.no_autoflush:
|
||||||
bookcase_selector = InteractiveItemSelector(
|
print("Please select the bookcase where the item is placed:")
|
||||||
cls=Bookcase,
|
bookcase_selector = InteractiveItemSelector(
|
||||||
sql_session=self.sql_session,
|
cls=Bookcase,
|
||||||
)
|
sql_session=self.sql_session,
|
||||||
bookcase_selector.cmdloop()
|
)
|
||||||
bookcase = bookcase_selector.result
|
bookcase_selector.cmdloop()
|
||||||
if bookcase == None:
|
bookcase = bookcase_selector.result
|
||||||
return
|
if bookcase == None:
|
||||||
|
return
|
||||||
|
|
||||||
bookcase_item.shelf = select_bookcase_shelf(bookcase, self.sql_session)
|
bookcase_item.shelf = select_bookcase_shelf(bookcase, self.sql_session)
|
||||||
|
|
||||||
print("Please select the items media type:")
|
print("Please select the items media type:")
|
||||||
media_type_selector = InteractiveItemSelector(
|
media_type_selector = InteractiveItemSelector(
|
||||||
cls=MediaType,
|
cls=MediaType,
|
||||||
sql_session=self.sql_session,
|
sql_session=self.sql_session,
|
||||||
default=self.sql_session.scalars(
|
default=self.sql_session.scalars(
|
||||||
select(MediaType).where(MediaType.name.ilike("book")),
|
select(MediaType).where(MediaType.name.ilike("book")),
|
||||||
).one(),
|
).one(),
|
||||||
)
|
)
|
||||||
|
|
||||||
media_type_selector.cmdloop()
|
media_type_selector.cmdloop()
|
||||||
bookcase_item.media_type = media_type_selector.result
|
bookcase_item.media_type = media_type_selector.result
|
||||||
if bookcase_item.media_type == None:
|
if bookcase_item.media_type == None:
|
||||||
return
|
return
|
||||||
|
|
||||||
username = input("Who owns this book? [PVV]> ")
|
username = input("Who owns this book? [PVV]> ")
|
||||||
if username != "":
|
if username != "":
|
||||||
bookcase_item.owner = username
|
bookcase_item.owner = username
|
||||||
|
|
||||||
self.sql_session.add(bookcase_item)
|
self.sql_session.add(bookcase_item)
|
||||||
self.sql_session.flush()
|
self.sql_session.flush()
|
||||||
@@ -246,7 +235,8 @@ class WorblehatCli(NumberedCmd):
|
|||||||
self.sql_session.commit()
|
self.sql_session.commit()
|
||||||
else:
|
else:
|
||||||
self.sql_session.rollback()
|
self.sql_session.rollback()
|
||||||
exit(0)
|
if Config["general.quit_allowed"]:
|
||||||
|
exit(0)
|
||||||
|
|
||||||
funcs = {
|
funcs = {
|
||||||
0: {
|
0: {
|
||||||
|
|||||||
@@ -65,7 +65,8 @@ def main() -> None:
|
|||||||
|
|
||||||
if args.command == "cli":
|
if args.command == "cli":
|
||||||
sql_session = _connect_to_database(echo=Config["logging.debug_sql"])
|
sql_session = _connect_to_database(echo=Config["logging.debug_sql"])
|
||||||
WorblehatCli.run_with_safe_exit_wrapper(sql_session)
|
worblehat = WorblehatCli(sql_session)
|
||||||
|
worblehat.run_with_safe_exit_wrapper()
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
if args.command == "create-db":
|
if args.command == "create-db":
|
||||||
|
|||||||
Reference in New Issue
Block a user