worked on system, added member, advisor & admin management.

This commit is contained in:
2022-10-05 21:47:05 +02:00
parent dac0fea952
commit a55017b23d
14 changed files with 522 additions and 35 deletions

121
views/advisor_menu.py Normal file
View File

@@ -0,0 +1,121 @@
from click import edit
from models.database import Database
from models.user import User
from services.search import Search
from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu
class AdvisorMenu:
@staticmethod
def search_advisor(browse_mode):
form = InputMenu("Search for Advisors")
form.add_option("QUERY", "Query", "STR", None, 1, 250, None)
form.do_input()
query = form.get_value("QUERY")
users = Search.search_advisors(query)
if len(users) == 0:
input(f"No Advisors found with query: {query}. Press any key to continue.")
return None
for index, user in enumerate(users):
print(f"/--[{index}]--------------")
print(f"| Username: {user.username}")
print(f"| Firstname: {user.firstname}")
print(f"| Lastname: {user.lastname}")
print(f"| Address: {user.lastname}")
print(f"| Zipcode: {user.zipcode}")
print(f"| City: {user.city_id}")
print(f"| Email: {user.email}")
print(f"| Phone: {user.phone}")
print(f"\--------------------\n")
if browse_mode:
input(f"\nPress any key to continue.")
return None
select_form = InputMenu("Select Advisor by index")
select_form.add_option("INDEX", "Index", "INT", None, 0, len(users) - 1, None)
select_form.do_input()
return users[select_form.get_value("INDEX")]
@staticmethod
def add_advisor():
form = InputMenu("Add new Advisor")
form.add_option("USERNAME", "Username", "STR", None, 1, 250, Validator.check_username)
form.add_option("FIRSTNAME", "Firstname", "STR", None, 1, 250, None)
form.add_option("LASTNAME", "Lastname", "STR", None, 1, 250, None)
form.add_option("ADDRESS", "Address", "STR", None, 1, 250, None)
form.add_option("ZIPCODE", "Zipcode", "STR", None, 6, 6, None)
form.add_option("CITY_ID", "City", "STR", None, 1, 250, None)
form.add_option("EMAIL", "Email", "STR", None, 1, 250, Validator.check_email)
form.add_option("PHONE", "Phone (+31-6)", "STR", None, 8, 8, None)
form.add_option("PASSWORD", "Password", "STR", None, 1, 255, Validator.check_password)
form.do_input()
new_user = User(Database.connection,
None,
form.get_value("USERNAME"),
form.get_value("FIRSTNAME"),
form.get_value("LASTNAME"),
form.get_value("ADDRESS"),
form.get_value("ZIPCODE"),
form.get_value("CITY_ID"),
form.get_value("EMAIL"),
"+31-6" + form.get_value("PHONE"),
form.get_value("PASSWORD"),
"ADVISOR"
)
new_user.save()
input("Added new Advisor! Press any key to return.")
@staticmethod
def edit_advisor():
user = AdvisorMenu.search_advisor(False)
edit_form = InputMenu("Edit Advisor (Leave fields empty to not change)")
edit_form.add_option("USERNAME", "Username", "STR", user.username, 1, 250, Validator.check_username)
edit_form.add_option("FIRSTNAME", "Firstname", "STR", user.firstname, 1, 250, None)
edit_form.add_option("LASTNAME", "Lastname", "STR", user.lastname, 1, 250, None)
edit_form.add_option("ADDRESS", "Address", "STR", user.address, 1, 250, None)
edit_form.add_option("ZIPCODE", "Zipcode", "STR", user.zipcode, 6, 6, None)
edit_form.add_option("CITY_ID", "City", "STR", user.city_id, 1, 250, None)
edit_form.add_option("EMAIL", "Email", "STR", user.email, 1, 250, Validator.check_email)
edit_form.add_option("PHONE", "Phone (+31-6)", "STR", user.phone, 8, 8, None)
edit_form.add_option("PASSWORD", "Password", "STR", user.phone, 1, 255, Validator.check_password)
edit_form.do_input()
user.username = edit_form.get_value("USERNAME")
user.firstname = edit_form.get_value("FIRSTNAME")
user.lastname = edit_form.get_value("LASTNAME")
user.address = edit_form.get_value("ADDRESS")
user.zipcode = edit_form.get_value("ZIPCODE")
user.city_id = edit_form.get_value("CITY_ID")
user.email = edit_form.get_value("EMAIL")
user.phone = edit_form.get_value("PHONE")
user.password = edit_form.get_value("PASSWORD")
user.update()
input("Updated Advisor! Press any key to return.")
@staticmethod
def remove_advisor():
user = AdvisorMenu.search_advisor(False)
confirm = SelectionMenu("Do you want to delete selected Advisor?")
confirm.add_option("Yes", True).add_option("No", False).display()
option = confirm.input_option()
if option == True:
user.delete()
input("Deleted Advisor! Press any key to return.")
@staticmethod
def browse_advisor():
AdvisorMenu.search_member(True)

View File

@@ -1,5 +1,6 @@
from time import sleep
from services.auth import Auth
from services.utils import Utils
from ui.input_menu import InputMenu
from services.state import State
from views.main_menu import MainMenu
@@ -9,9 +10,9 @@ class LoginMenu:
@staticmethod
def display():
while True:
os.system("clear")
Utils.clear_screen()
login_form = InputMenu("Login Into Furnicur Family System")
login_form.add_option("USERNAME", "Username", "STR", "frozen", 1, 250, None).add_option("PASSWORD", "Password", "STR", "admin", 1, 250, None).do_input()
login_form.add_option("USERNAME", "Username", "STR", "superadmin", 1, 250, None).add_option("PASSWORD", "Password", "STR", "Admin321!", 1, 250, None).do_input()
user = Auth.check_auth(login_form.get_value("USERNAME"), login_form.get_value("PASSWORD"))
if user:

View File

@@ -1,21 +1,28 @@
import os
from services.state import State
from services.utils import Utils
from ui.selection_menu import SelectionMenu
from views.member_menu import MemberMenu
from views.system_admin_menu import SystemAdminMenu
class MainMenu:
@staticmethod
def display():
while True:
os.system("clear")
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", None)
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" and State.CURRENT_USER.role == "SUPER_ADMIN":
main_menu.add_option("Manage Advisors", None)
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("Exit...", None)
@@ -27,12 +34,47 @@ class MainMenu:
@staticmethod
def manage_members():
os.system("clear")
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", MemberMenu.add_member)
menu.add_option("Edit Advisor", MemberMenu.edit_member)
menu.add_option("Remove Advisor", MemberMenu.remove_member)
menu.add_option("Browse Advisor", 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_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("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()

View File

@@ -1,18 +1,52 @@
from click import edit
from models.database import Database
from models.user import User
from services.search import Search
from ui.input_menu import InputMenu, EMAIL_VALIDATOR
from ui.selection_menu import SelectionMenu
class MemberMenu:
@staticmethod
def search_member():
form = InputMenu("Search for member")
def search_member(browse_mode):
form = InputMenu("Search for Member")
form.add_option("QUERY", "Query", "STR", None, 1, 250, None)
form.do_input()
query = form.get_value("QUERY")
users = Search.search_members(query)
if len(users) == 0:
input(f"No Members found with query: {query}. Press any key to continue.")
return None
for index, user in enumerate(users):
print(f"/--[{index}]--------------")
print(f"| Username: {user.username}")
print(f"| Firstname: {user.firstname}")
print(f"| Lastname: {user.lastname}")
print(f"| Address: {user.lastname}")
print(f"| Zipcode: {user.zipcode}")
print(f"| City: {user.city_id}")
print(f"| Email: {user.email}")
print(f"| Phone: {user.phone}")
print(f"\--------------------\n")
if browse_mode:
input(f"\nPress any key to continue.")
return None
select_form = InputMenu("Select Member by index")
select_form.add_option("INDEX", "Index", "INT", None, 0, len(users) - 1, None)
select_form.do_input()
return users[select_form.get_value("INDEX")]
@staticmethod
def add_member():
form = InputMenu("Add new member")
form = InputMenu("Add new Member")
form.add_option("FIRSTNAME", "Firstname", "STR", None, 1, 250, None)
form.add_option("LASTNAME", "Lastname", "STR", None, 1, 250, None)
form.add_option("ADDRESS", "Address", "STR", None, 1, 250, None)
@@ -37,12 +71,45 @@ class MemberMenu:
)
new_user.save()
input("Added new member! Press any key to return.")
input("Added new Member! Press any key to return.")
@staticmethod
def edit_member():
pass
user = MemberMenu.search_member(False)
edit_form = InputMenu("Edit Member (Leave fields empty to not change)")
edit_form.add_option("FIRSTNAME", "Firstname", "STR", user.firstname, 1, 250, None)
edit_form.add_option("LASTNAME", "Lastname", "STR", user.lastname, 1, 250, None)
edit_form.add_option("ADDRESS", "Address", "STR", user.address, 1, 250, None)
edit_form.add_option("ZIPCODE", "Zipcode", "STR", user.zipcode, 6, 6, None)
edit_form.add_option("CITY_ID", "City", "STR", user.city_id, 1, 250, None)
edit_form.add_option("EMAIL", "Email", "STR", user.email, 1, 250, EMAIL_VALIDATOR)
edit_form.add_option("PHONE", "Phone (+31-6)", "STR", user.phone, 8, 8, None)
edit_form.do_input()
user.firstname = edit_form.get_value("FIRSTNAME")
user.lastname = edit_form.get_value("LASTNAME")
user.address = edit_form.get_value("ADDRESS")
user.zipcode = edit_form.get_value("ZIPCODE")
user.city_id = edit_form.get_value("CITY_ID")
user.email = edit_form.get_value("EMAIL")
user.phone = edit_form.get_value("PHONE")
user.update()
input("Updated Member! Press any key to return.")
@staticmethod
def remove_member():
pass
user = MemberMenu.search_member(False)
confirm = SelectionMenu("Do you want to delete selected Member?")
confirm.add_option("Yes", True).add_option("No", False).display()
option = confirm.input_option()
if option == True:
user.delete()
input("Deleted Member! Press any key to return.")
@staticmethod
def browse_member():
MemberMenu.search_member(True)

View File

@@ -1,4 +1,121 @@
from click import edit
from models.database import Database
from models.user import User
from services.search import Search
from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu
class SystemAdminMenu:
@staticmethod
def display():
pass
def search_admins(browse_mode):
form = InputMenu("Search for System Admins")
form.add_option("QUERY", "Query", "STR", None, 1, 250, None)
form.do_input()
query = form.get_value("QUERY")
users = Search.search_admins(query)
if len(users) == 0:
input(f"No System Admins found with query: {query}. Press any key to continue.")
return None
for index, user in enumerate(users):
print(f"/--[{index}]--------------")
print(f"| Username: {user.username}")
print(f"| Firstname: {user.firstname}")
print(f"| Lastname: {user.lastname}")
print(f"| Address: {user.lastname}")
print(f"| Zipcode: {user.zipcode}")
print(f"| City: {user.city_id}")
print(f"| Email: {user.email}")
print(f"| Phone: {user.phone}")
print(f"\--------------------\n")
if browse_mode:
input(f"\nPress any key to continue.")
return None
select_form = InputMenu("Select System Admin by index")
select_form.add_option("INDEX", "Index", "INT", None, 0, len(users) - 1, None)
select_form.do_input()
return users[select_form.get_value("INDEX")]
@staticmethod
def add_admin():
form = InputMenu("Add new System Admin")
form.add_option("USERNAME", "Username", "STR", None, 1, 250, Validator.check_username)
form.add_option("FIRSTNAME", "Firstname", "STR", None, 1, 250, None)
form.add_option("LASTNAME", "Lastname", "STR", None, 1, 250, None)
form.add_option("ADDRESS", "Address", "STR", None, 1, 250, None)
form.add_option("ZIPCODE", "Zipcode", "STR", None, 6, 6, None)
form.add_option("CITY_ID", "City", "STR", None, 1, 250, None)
form.add_option("EMAIL", "Email", "STR", None, 1, 250, Validator.check_email)
form.add_option("PHONE", "Phone (+31-6)", "STR", None, 8, 8, None)
form.add_option("PASSWORD", "Password", "STR", None, 1, 255, Validator.check_password)
form.do_input()
new_user = User(Database.connection,
None,
"",
form.get_value("FIRSTNAME"),
form.get_value("LASTNAME"),
form.get_value("ADDRESS"),
form.get_value("ZIPCODE"),
form.get_value("CITY_ID"),
form.get_value("EMAIL"),
"+31-6" + form.get_value("PHONE"),
form.get_value("PASSWORD"),
"SYSTEM_ADMIN"
)
new_user.save()
input("Added new system admin! Press any key to return.")
@staticmethod
def edit_admin():
user = SystemAdminMenu.search_admins(False)
edit_form = InputMenu("Edit System Admin (Leave fields empty to not change)")
edit_form.add_option("Username", "Username", "STR", user.username, 1, 250, Validator.check_username)
edit_form.add_option("FIRSTNAME", "Firstname", "STR", user.firstname, 1, 250, None)
edit_form.add_option("LASTNAME", "Lastname", "STR", user.lastname, 1, 250, None)
edit_form.add_option("ADDRESS", "Address", "STR", user.address, 1, 250, None)
edit_form.add_option("ZIPCODE", "Zipcode", "STR", user.zipcode, 6, 6, None)
edit_form.add_option("CITY_ID", "City", "STR", user.city_id, 1, 250, None)
edit_form.add_option("EMAIL", "Email", "STR", user.email, 1, 250, Validator.check_email)
edit_form.add_option("PHONE", "Phone (+31-6)", "STR", user.phone, 8, 8, None)
edit_form.add_option("PASSWORD", "Password", "STR", user.phone, 1, 255, Validator.check_password)
edit_form.do_input()
user.username = edit_form.get_value("USERNAME")
user.firstname = edit_form.get_value("FIRSTNAME")
user.lastname = edit_form.get_value("LASTNAME")
user.address = edit_form.get_value("ADDRESS")
user.zipcode = edit_form.get_value("ZIPCODE")
user.city_id = edit_form.get_value("CITY_ID")
user.email = edit_form.get_value("EMAIL")
user.phone = edit_form.get_value("PHONE")
user.password = edit_form.get_value("PASSWORD")
user.update()
input("Updated System Admin! Press any key to return.")
@staticmethod
def remove_admin():
user = SystemAdminMenu.search_admins(False)
confirm = SelectionMenu("Do you want to delete selected system admin?")
confirm.add_option("Yes", True).add_option("No", False).display()
option = confirm.input_option()
if option == True:
user.delete()
input("Deleted advisor! Press any key to return.")
@staticmethod
def browse_admins():
SystemAdminMenu.search_admins(True)