From b56b687f73e4b6389fa339a84f68d0ced556c122 Mon Sep 17 00:00:00 2001 From: Nick Leeman Date: Fri, 7 Oct 2022 20:10:08 +0200 Subject: [PATCH] working on project --- main.py | 2 +- models/city.py | 7 ++++--- services/search.py | 15 +++++++++++++++ views/advisor_menu.py | 25 +++++++++++++++++++------ views/member_menu.py | 29 +++++++++++++++++++++++------ views/system_admin_menu.py | 24 +++++++++++++++++++----- 6 files changed, 81 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index fbbcea2..75be557 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ from venv import create from models.utils import DatabaseUtils from models.database import Database from services.search import Search -from ui.input_menu import InputMenu, EMAIL_VALIDATOR +from ui.input_menu import InputMenu from views.login_menu import LoginMenu from services.log import LogService diff --git a/models/city.py b/models/city.py index 4ca3fc7..f8bd51e 100644 --- a/models/city.py +++ b/models/city.py @@ -1,7 +1,7 @@ import sqlite3 class City: - def __init__(self, connection : sqlite3.Connection, id, name): + def __init__(self, connection : sqlite3.Connection, id = None, name = None): self.connection = connection self.id = id self.name = name @@ -55,11 +55,12 @@ class City: def delete(self): cur = self.connection.cursor() - cur.execute("""DELETE FROM logs WHERE id = ?""", (self.id)) + cur.execute("""DELETE FROM cities WHERE id = ?""", (self.id)) self.connection.commit() cur.close() return True def _set_row_values(self, row): self.id = row[0] - self.name = row[1] \ No newline at end of file + self.name = row[1] + return self \ No newline at end of file diff --git a/services/search.py b/services/search.py index 64b2c82..22e19a1 100644 --- a/services/search.py +++ b/services/search.py @@ -1,5 +1,6 @@ from models.database import Database from models.user import User +from models.city import City class Search: @staticmethod @@ -66,4 +67,18 @@ class Search: if user.role == "SYSTEM_ADMIN": payload.append(user) + return payload + + @staticmethod + def get_all_cites(): + cur = Database.connection.cursor() + cur.execute("SELECT * FROM cities") + rows = cur.fetchall() + + payload = [] + for row in rows: + print(row) + city = City(Database.connection)._set_row_values(row) + payload.append(city) + return payload \ No newline at end of file diff --git a/views/advisor_menu.py b/views/advisor_menu.py index af3e8a3..6e52fac 100644 --- a/views/advisor_menu.py +++ b/views/advisor_menu.py @@ -42,7 +42,17 @@ class AdvisorMenu: select_form.do_input() return users[select_form.get_value("INDEX")] + + @staticmethod + def select_city(): + menu = SelectionMenu("Select City") + + cities = Search.get_all_cites() + for city in cities: + menu.add_option(city.name, city.id) + option = menu.display().input_option() + return option @staticmethod def add_advisor(): @@ -52,12 +62,13 @@ class AdvisorMenu: 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() + city_id = AdvisorMenu.select_city() + new_user = User(Database.connection, None, form.get_value("USERNAME"), @@ -65,7 +76,7 @@ class AdvisorMenu: form.get_value("LASTNAME"), form.get_value("ADDRESS"), form.get_value("ZIPCODE"), - form.get_value("CITY_ID"), + city_id, form.get_value("EMAIL"), "+31-6" + form.get_value("PHONE"), form.get_value("PASSWORD"), @@ -85,21 +96,23 @@ class AdvisorMenu: 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() + select_menu = SelectionMenu("Do want to change the city?") + select_menu.add_option("No", False).add_option("Yes", True).display() + change_city = select_menu.input_option() + if change_city: + user.city_id = AdvisorMenu.select_city() + 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.") diff --git a/views/member_menu.py b/views/member_menu.py index 0d8477b..9b50261 100644 --- a/views/member_menu.py +++ b/views/member_menu.py @@ -3,7 +3,7 @@ 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.input_menu import InputMenu, Validator from ui.selection_menu import SelectionMenu @@ -43,7 +43,18 @@ class MemberMenu: return users[select_form.get_value("INDEX")] + + @staticmethod + def select_city(): + menu = SelectionMenu("Select City") + + cities = Search.get_all_cites() + for city in cities: + menu.add_option(city.name, city.id) + option = menu.display().input_option() + return option + @staticmethod def add_member(): form = InputMenu("Add new Member") @@ -51,11 +62,12 @@ class MemberMenu: 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, EMAIL_VALIDATOR) + 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.do_input() + city_id = MemberMenu.select_city() + new_user = User(Database.connection, None, "", @@ -63,7 +75,7 @@ class MemberMenu: form.get_value("LASTNAME"), form.get_value("ADDRESS"), form.get_value("ZIPCODE"), - form.get_value("CITY_ID"), + city_id, form.get_value("EMAIL"), "+31-6" + form.get_value("PHONE"), "", @@ -82,11 +94,16 @@ class MemberMenu: 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("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.do_input() + select_menu = SelectionMenu("Do want to change the city?") + select_menu.add_option("No", False).add_option("Yes", True).display() + change_city = select_menu.input_option() + if change_city: + user.city_id = MemberMenu.select_city() + user.firstname = edit_form.get_value("FIRSTNAME") user.lastname = edit_form.get_value("LASTNAME") user.address = edit_form.get_value("ADDRESS") diff --git a/views/system_admin_menu.py b/views/system_admin_menu.py index e00e505..630c11e 100644 --- a/views/system_admin_menu.py +++ b/views/system_admin_menu.py @@ -42,7 +42,17 @@ class SystemAdminMenu: select_form.do_input() return users[select_form.get_value("INDEX")] + + @staticmethod + def select_city(): + menu = SelectionMenu("Select City") + + cities = Search.get_all_cites() + for city in cities: + menu.add_option(city.name, city.id) + option = menu.display().input_option() + return option @staticmethod def add_admin(): @@ -52,12 +62,13 @@ class SystemAdminMenu: 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() + city_id = SystemAdminMenu.select_city() + new_user = User(Database.connection, None, "", @@ -65,7 +76,7 @@ class SystemAdminMenu: form.get_value("LASTNAME"), form.get_value("ADDRESS"), form.get_value("ZIPCODE"), - form.get_value("CITY_ID"), + city_id, form.get_value("EMAIL"), "+31-6" + form.get_value("PHONE"), form.get_value("PASSWORD"), @@ -88,18 +99,21 @@ class SystemAdminMenu: 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() + select_menu = SelectionMenu("Do want to change the city?") + select_menu.add_option("No", False).add_option("Yes", True).display() + change_city = select_menu.input_option() + if change_city: + user.city_id = SystemAdminMenu.select_city() + 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.")