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) main_menu.add_option("View logs", MainMenu.check_logs) 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) if State.CURRENT_USER.role == "SYSTEM_ADMIN" or State.CURRENT_USER.role == "SUPER_ADMIN": 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() logs = LogService.get_latest_logs() for log in logs: print(f"/--[ {log.id} ]---------") print(f"| Username: {log.username}") print(f"| Description: {log.description}") print(f"| Additional Information: {log.additional_information}") print(f"| Suspicious: {log.suspicious}") print(f"| Date: {log.date} {log.time}") print(f"\-------------\n") input("Press any key to continue.")