diff --git a/modules/menu/callbacks/overkill/__init__.py b/modules/menu/callbacks/overkill/__init__.py new file mode 100644 index 0000000..1012973 --- /dev/null +++ b/modules/menu/callbacks/overkill/__init__.py @@ -0,0 +1 @@ +from .callbacks import overkill_callback diff --git a/modules/menu/callbacks/overkill/callbacks.py b/modules/menu/callbacks/overkill/callbacks.py new file mode 100644 index 0000000..5acf7be --- /dev/null +++ b/modules/menu/callbacks/overkill/callbacks.py @@ -0,0 +1,20 @@ +from modules.decorators.callback import callback +from modules.config import sessions +from rich import print +import os + + +@callback +def overkill_callback(): + if input('Do you really want to delete overkill items in database? This will remove junk from it, ' + 'but won\'t affect your sessions (y/N) ') not in ['y', 'Y']: + return + print('Clearing...') + deleted = 0 + for session_name in sessions.keys(): + if not os.path.isfile(f'{session_name}.session'): + del sessions[session_name] + deleted += 1 + + print(f'[green]Deleted[/] {deleted} records...') + input() diff --git a/modules/menu/dynamic/overkill/__init__.py b/modules/menu/dynamic/overkill/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/modules/menu/items/manage/fields.py b/modules/menu/items/manage/fields.py index 9294e1a..1ac6084 100644 --- a/modules/menu/items/manage/fields.py +++ b/modules/menu/items/manage/fields.py @@ -1,4 +1,6 @@ from cursesmenu import CursesMenu +from cursesmenu.items import FunctionItem +from ...callbacks.overkill import overkill_callback from ...dynamic import update from ...dynamic import delete @@ -6,6 +8,7 @@ from ...dynamic import delete def get_items_list(menu: CursesMenu): _ = [ update.get_submenu_item, - delete.get_submenu_item + delete.get_submenu_item, + lambda _: FunctionItem('Delete overkill sessions', function=overkill_callback) ] return [x(menu) for x in _]