working on member menu manage

This commit is contained in:
Nick Leeman 2022-10-04 19:38:42 +02:00
parent d6467b2a8f
commit 688867250b
10 changed files with 146 additions and 34 deletions

21
main.py
View File

@ -1,27 +1,10 @@
from models.utils import DatabaseUtils
from ui.selection_menu import SelectionMenu
from ui.input_menu import InputMenu
from services.encryption import Encryption
from models.database import Database
from views.login_menu import LoginMenu
def main():
# main_menu = SelectionMenu("Main Menu").add_option("Login", damn).add_option("Exit", damn).display()
# action = main_menu.input_option()
# action()
# main_form = InputMenu("User Information")
# main_form.add_option("USERNAME", "STR", "Username", 1, 254)
# main_form.add_option("PASSWORD", "STR", "Password", 1, 254)
# main_form.add_option("AGE", "INT", "Age", 5, 100)
# main_form.do_input()
# print(main_form.get_value("USERNAME"))
Database.init()
DatabaseUtils.init_city_data()
def damn():
print("dsdd")
LoginMenu.display()
main()

View File

@ -37,7 +37,8 @@ class Database:
cursor = Database.connection.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
id INTEGER PRIMARY KEY,
username TEXT,
firstname TEXT,
lastname TEXT,
address TEXT,

View File

@ -2,9 +2,10 @@ import sqlite3
from models.database import Database
class User:
def __init__(self, connection : sqlite3.Connection, id = None, firstname = None, lastname = None, address = None, zipcode = None, city_id = None, email = None, phone = None, password = None, role = None):
def __init__(self, connection : sqlite3.Connection, id = None, username = None, firstname = None, lastname = None, address = None, zipcode = None, city_id = None, email = None, phone = None, password = None, role = None):
self.connection = connection
self.id = id
self.username = username
self.firstname = firstname
self.lastname = lastname
self.address = address
@ -27,12 +28,24 @@ class User:
cur.close()
return True
def load_by_username(self):
cur = Database.connection.cursor()
row = cur.execute("SELECT * FROM users WHERE username = ?", (self.username,)).fetchone()
if row == None:
return False
self._set_row_values(row)
cur.close()
return True
def save(self):
cur = Database.connection.cursor()
cur.execute("""
INSERT INTO users
(id, fistname, lastname, address, zipcode, city_id, email, phone, password, role) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", (self.id, self.firstname, self.lastname, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role))
(id, username, fistname, lastname, address, zipcode, city_id, email, phone, password, role) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", (self.id, self.username, self.firstname, self.lastname, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role))
Database.connection.commit()
cur.close()
@ -42,6 +55,7 @@ class User:
cur = Database.connection.cursor()
cur.execute("""
UPDATE users SET
username = ?,
fistname = ?,
lastname = ?,
address = ?,
@ -52,7 +66,7 @@ class User:
password = ?,
role = ?,
WHERE id = ?
""", (self.firstname, self.lastname, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role, self.id))
""", (self.username, self.firstname, self.lastname, self.zipcode, self.city_id, self.email, self.phone, self.password, self.role, self.id))
Database.connection.commit()
cur.close()
@ -60,13 +74,14 @@ class User:
def _set_row_values(self, row):
self.id = row[0]
self.firstname = row[1]
self.lastname = row[2]
self.address = row[3]
self.zipcode = row[4]
self.city_id = row[5]
self.email = row[6]
self.phone = row[7]
self.password = row[8]
self.role = row[9]
self.username = row[1]
self.firstname = row[2]
self.lastname = row[3]
self.address = row[4]
self.zipcode = row[5]
self.city_id = row[6]
self.email = row[7]
self.phone = row[8]
self.password = row[9]
self.role = row[10]

9
services/auth.py Normal file
View File

@ -0,0 +1,9 @@
from models.database import Database
from models.user import User
class Auth:
def check_auth(username, password):
user = User(Database.connection, None, username)
if user.load_by_username() and user.password == password:
return user
return None

5
services/state.py Normal file
View File

@ -0,0 +1,5 @@
from ast import Import
from models.user import User
class State:
CURRENT_USER: User = None

View File

@ -11,7 +11,7 @@ class InputMenu:
def do_input(self):
print("")
print(f"/--[ {self._title} ]----------------------------")
print(f"/--[ {self._title} ]-------------")
for i in range(len(self._fields)):
data = None

24
views/login_menu.py Normal file
View File

@ -0,0 +1,24 @@
from time import sleep
from services.auth import Auth
from ui.input_menu import InputMenu
from services.state import State
from views.main_menu import MainMenu
import os
class LoginMenu:
@staticmethod
def display():
while True:
os.system("clear")
login_form = InputMenu("Login Into Furnicur Family System")
login_form.add_option("USERNAME", "STR", "Username", 1, 250).add_option("PASSWORD", "STR", "Password", 1, 250).do_input()
user = Auth.check_auth(login_form.get_value("USERNAME"), login_form.get_value("PASSWORD"))
if user:
State.CURRENT_USER = user
break
print("Invalid Credentials! Please try again.")
sleep(1)
MainMenu.display()

44
views/main_menu.py Normal file
View File

@ -0,0 +1,44 @@
import os
from services.state import State
from ui.selection_menu import SelectionMenu
from views.member_menu import MemberMenu
class MainMenu:
@staticmethod
def display():
while True:
os.system("clear")
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)
if State.CURRENT_USER.role == "SYSTEM_ADMIN" and State.CURRENT_USER.role == "SUPER_ADMIN":
main_menu.add_option("Manage Advisors", None)
main_menu.add_option("Exit...", None)
selected_option = main_menu.display().input_option()
if selected_option == None:
exit(0)
selected_option()
@staticmethod
def manage_members():
os.system("clear")
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("Back to main menu", None)
selected_option = menu.display().input_option()
if selected_option == None:
return
selected_option()

27
views/member_menu.py Normal file
View File

@ -0,0 +1,27 @@
from ui.input_menu import InputMenu
class MemberMenu:
@staticmethod
def add_member():
menu = InputMenu()
menu.add_option("USERNAME", "STR", "Username", 1, 250)
menu.add_option("FIRSTNAME", "STR", "Firstname", 1, 250)
menu.add_option("LASTNAME", "STR", "Lastname", 1, 250)
menu.add_option("ADDRESS", "STR", "Address", 1, 250)
menu.add_option("ZIPCODE", "STR", "Zipcode", 1, 250)
menu.add_option("CITY_ID", "STR", "City", 1, 250)
menu.add_option("EMAIL", "STR", "Email", 1, 250)
menu.add_option("PHONE", "STR", "Phone", 1, 250)
menu.add_option("PASSWORD", "STR", "Password", 1, 250)
pass
@staticmethod
def edit_member():
pass
@staticmethod
def remove_member():
pass

View File

@ -0,0 +1,4 @@
class SystemAdminMenu:
@staticmethod
def display():
pass