147 lines
5.5 KiB
Python
147 lines
5.5 KiB
Python
import os
|
|
from services.state import State
|
|
from services.utils import Utils
|
|
from ui.input_menu import InputMenu, Validator
|
|
from ui.selection_menu import SelectionMenu
|
|
from views.advisor_menu import AdvisorMenu
|
|
from views.backup_menu import BackupMenu
|
|
from views.member_menu import MemberMenu
|
|
from views.system_admin_menu import SystemAdminMenu
|
|
from services.log import LogService
|
|
class MainMenu:
|
|
@staticmethod
|
|
def display():
|
|
while True:
|
|
Utils.clear_screen()
|
|
main_menu = SelectionMenu(f"Welcome {State.CURRENT_USER.username}!")
|
|
|
|
if State.CURRENT_USER.role == "ADVISOR" or State.CURRENT_USER.role == "SYSTEM_ADMIN":
|
|
main_menu.add_option("Update My Password", MainMenu.update_password)
|
|
main_menu.add_option("Manage Members", MainMenu.manage_members)
|
|
else:
|
|
main_menu.add_option("Manage Members", MainMenu.manage_members)
|
|
|
|
if State.CURRENT_USER.role == "SYSTEM_ADMIN" or State.CURRENT_USER.role == "SUPER_ADMIN":
|
|
main_menu.add_option("Manage Advisors", MainMenu.manage_advisors)
|
|
|
|
if State.CURRENT_USER.role == "SUPER_ADMIN":
|
|
main_menu.add_option("Manage Admins", MainMenu.manage_admins)
|
|
main_menu.add_option("Manage Backups", MainMenu.manage_backups)
|
|
|
|
main_menu.add_option("Exit...", None)
|
|
|
|
selected_option = main_menu.display().input_option()
|
|
if selected_option == None:
|
|
exit(0)
|
|
|
|
selected_option()
|
|
|
|
@staticmethod
|
|
def update_password():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Do you want to update your own password?")
|
|
menu.add_option("Yes", True)
|
|
menu.add_option("No", False)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == False:
|
|
return
|
|
|
|
form = InputMenu("Set new password")
|
|
form.add_option("PASSWORD", "Password", "STR", None, 1, 255, Validator.check_password)
|
|
form.do_input()
|
|
State.CURRENT_USER.password = form.get_value("PASSWORD")
|
|
State.CURRENT_USER.update()
|
|
|
|
input("Current password updated! Press any key to continue.")
|
|
|
|
@staticmethod
|
|
def manage_members():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Manage Members")
|
|
menu.add_option("Add Member", MemberMenu.add_member)
|
|
menu.add_option("Edit Member", MemberMenu.edit_member)
|
|
menu.add_option("Remove Member", MemberMenu.remove_member)
|
|
menu.add_option("Browse Member", MemberMenu.browse_member)
|
|
menu.add_option("Back to main menu", None)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == None:
|
|
return
|
|
|
|
selected_option()
|
|
|
|
@staticmethod
|
|
def manage_advisors():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Manage Advisors")
|
|
menu.add_option("Add Advisor", AdvisorMenu.add_advisor)
|
|
menu.add_option("Edit Advisor", AdvisorMenu.edit_advisor)
|
|
menu.add_option("Reset Password Advisor", AdvisorMenu.update_password_advisor)
|
|
menu.add_option("Remove Advisor", AdvisorMenu.remove_advisor)
|
|
menu.add_option("Browse Advisor", AdvisorMenu.browse_advisor)
|
|
menu.add_option("Back to main menu", None)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == None:
|
|
return
|
|
|
|
selected_option()
|
|
|
|
@staticmethod
|
|
def manage_admins():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Manage System Admins")
|
|
menu.add_option("Add System Admin", SystemAdminMenu.add_admin)
|
|
menu.add_option("Edit System Admin", SystemAdminMenu.edit_admin)
|
|
menu.add_option("Reset Password System Admin", SystemAdminMenu.update_password_admin)
|
|
menu.add_option("Remove System Admin", SystemAdminMenu.remove_admin)
|
|
menu.add_option("Browse System Admin", SystemAdminMenu.browse_admins)
|
|
menu.add_option("Back to main menu", None)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == None:
|
|
return
|
|
|
|
selected_option()
|
|
|
|
@staticmethod
|
|
def manage_backups():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Manage Backups")
|
|
menu.add_option("Create Backup", BackupMenu.create_backup)
|
|
menu.add_option("Import Backup", BackupMenu.import_backup)
|
|
menu.add_option("Back to main menu", None)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == None:
|
|
return
|
|
|
|
selected_option()
|
|
|
|
@staticmethod
|
|
def check_logs():
|
|
Utils.clear_screen()
|
|
|
|
menu = SelectionMenu(f"Do you want to view the latest logs?")
|
|
menu.add_option("Yes", True)
|
|
menu.add_option("No", False)
|
|
|
|
selected_option = menu.display().input_option()
|
|
if selected_option == False:
|
|
return
|
|
|
|
logs = LogService.get_latest_logs()
|
|
print("==================================================================")
|
|
print("| id | Date | Time | Description Activity | Addition Information | Suspicious |")
|
|
for log in logs:
|
|
print(f"{log.id} | {log.date} | {log.time} | {log.description} | {log.additional_information} | {log.suspicious}")
|
|
print("==================================================================")
|
|
|
|
input("Press any key to continue.")
|