gui cu modele
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
from .request_builder import RequestBuilder
|
||||||
|
|
||||||
|
request_builder = RequestBuilder()
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
from .request_handler import _HttpRequestHandler
|
||||||
|
|
||||||
|
|
||||||
|
class RequestBuilder:
|
||||||
|
def __init__(self):
|
||||||
|
self.url = ""
|
||||||
|
self.headers = {}
|
||||||
|
self.body = None
|
||||||
|
self.method = "GET"
|
||||||
|
|
||||||
|
def set_url(self, url):
|
||||||
|
self.url = url
|
||||||
|
return self
|
||||||
|
|
||||||
|
def set_headers(self, headers):
|
||||||
|
self.headers = headers
|
||||||
|
return self
|
||||||
|
|
||||||
|
def set_body(self, body):
|
||||||
|
self.body = body
|
||||||
|
return self
|
||||||
|
|
||||||
|
def set_method(self, method):
|
||||||
|
self.method = method
|
||||||
|
return self
|
||||||
|
|
||||||
|
def build(self):
|
||||||
|
return _HttpRequestHandler(self.url)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
class _HttpRequestHandler:
|
||||||
|
def __init__(self, base_url):
|
||||||
|
self.base_url = base_url
|
||||||
|
|
||||||
|
def make_request(self, method, endpoint, params=None, data=None, headers=None):
|
||||||
|
url = f"{self.base_url}/{endpoint}"
|
||||||
|
response = requests.request(method, url, params=params, data=data, headers=headers)
|
||||||
|
return response
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
class SignupModel:
|
||||||
|
def __init__(self, username:str, password:str, email:str):
|
||||||
|
self.username = username
|
||||||
|
self.password = password
|
||||||
|
self.email = email
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
errors = []
|
||||||
|
|
||||||
|
# Check if username, password, and email are provided
|
||||||
|
if not self.username:
|
||||||
|
errors.append("Username is required.")
|
||||||
|
if len(self.username) < 8:
|
||||||
|
errors.append("Username must be at least 8 characters.")
|
||||||
|
if not self.password:
|
||||||
|
errors.append("Password is required.")
|
||||||
|
if len(self.password) < 8:
|
||||||
|
errors.append("Password must be at least 8 characters.")
|
||||||
|
if not self.email:
|
||||||
|
errors.append("Email is required.")
|
||||||
|
|
||||||
|
email_pattern = re.compile(r"[^@]+@[^@]+\.[^@]+")
|
||||||
|
if not email_pattern.match(self.email):
|
||||||
|
errors.append("Invalid email format.")
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
return False, errors
|
||||||
|
|
||||||
|
# If all validations pass, return True
|
||||||
|
return True, []
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import tkinter
|
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
import re
|
from app.models.view_models.signup import SignupModel
|
||||||
|
|
||||||
|
|
||||||
class SignupView(tk.Frame):
|
class SignupView(tk.Frame):
|
||||||
def __init__(self, master=None):
|
def __init__(self, master=None):
|
||||||
@@ -11,68 +11,58 @@ class SignupView(tk.Frame):
|
|||||||
# Create a frame to hold the entry fields and labels
|
# Create a frame to hold the entry fields and labels
|
||||||
form_frame = tk.Frame(self)
|
form_frame = tk.Frame(self)
|
||||||
|
|
||||||
|
# Error label
|
||||||
|
self.error_var = tk.StringVar() # Variable to store error message
|
||||||
|
self.error_label = tk.Label(form_frame, textvariable=self.error_var, fg="red")
|
||||||
|
self.error_label.grid(row=0, column=0, pady=5, columnspan=2) # Span columns for full width
|
||||||
|
|
||||||
|
# Left frame for labels
|
||||||
|
label_frame = tk.Frame(form_frame)
|
||||||
|
label_frame.grid(row=1, column=0, pady=5, padx=5, sticky="w")
|
||||||
|
|
||||||
|
# Right frame for entry widgets
|
||||||
|
entry_frame = tk.Frame(form_frame)
|
||||||
|
entry_frame.grid(row=1, column=1, pady=5, padx=5, sticky="e")
|
||||||
|
|
||||||
# Username Label and Entry
|
# Username Label and Entry
|
||||||
self.username_label = tk.Label(form_frame, text="Username:")
|
self.username_label = tk.Label(label_frame, text="Username:")
|
||||||
self.username_label.grid(row=0, column=0, pady=5)
|
self.username_label.grid(row=0, column=0, pady=5, sticky="w")
|
||||||
self.username_entry = tk.Entry(form_frame)
|
|
||||||
self.username_entry.grid(row=0, column=1, pady=5)
|
self.username_entry = tk.Entry(entry_frame)
|
||||||
self.username_error_var = tk.StringVar() # Variable to store error message
|
self.username_entry.grid(row=0, column=0, pady=5, sticky="e")
|
||||||
self.username_error_label = tk.Label(form_frame, textvariable=self.username_error_var, fg="red")
|
|
||||||
|
|
||||||
# Email Label and Entry
|
# Email Label and Entry
|
||||||
self.email_label = tk.Label(form_frame, text="Email:")
|
self.email_label = tk.Label(label_frame, text="Email:")
|
||||||
self.email_label.grid(row=1, column=0, pady=5)
|
self.email_label.grid(row=1, column=0, pady=5, sticky="w")
|
||||||
self.email_entry = tk.Entry(form_frame)
|
|
||||||
self.email_entry.grid(row=1, column=1, pady=5)
|
self.email_entry = tk.Entry(entry_frame)
|
||||||
self.email_error_var = tk.StringVar() # Variable to store error message
|
self.email_entry.grid(row=1, column=0, pady=5, sticky="e")
|
||||||
self.email_error_label = tk.Label(form_frame, textvariable=self.email_error_var, fg="red")
|
|
||||||
|
|
||||||
# Password Label and Entry
|
# Password Label and Entry
|
||||||
self.password_label = tk.Label(form_frame, text="Password:")
|
self.password_label = tk.Label(label_frame, text="Password:")
|
||||||
self.password_label.grid(row=2, column=0, pady=5)
|
self.password_label.grid(row=2, column=0, pady=5, sticky="w")
|
||||||
self.password_entry = tk.Entry(form_frame, show="*") # Use show="*" to hide password characters
|
|
||||||
self.password_entry.grid(row=2, column=1, pady=5)
|
self.password_entry = tk.Entry(entry_frame, show="*")
|
||||||
self.password_error_var = tk.StringVar() # Variable to store error message
|
self.password_entry.grid(row=2, column=0, pady=5, sticky="e")
|
||||||
self.password_error_label = tk.Label(form_frame, textvariable=self.password_error_var, fg="red")
|
|
||||||
|
|
||||||
# Signup Button
|
# Signup Button
|
||||||
self.signup_button = tk.Button(form_frame, text="Signup", command=self.on_signup)
|
self.signup_button = tk.Button(form_frame, text="Signup", command=self.on_signup)
|
||||||
self.signup_button.grid(row=3, column=1, pady=10)
|
self.signup_button.grid(row=2, column=0, columnspan=2, pady=10) # Span columns for full width
|
||||||
self.clear_errors()
|
|
||||||
|
|
||||||
form_frame.pack()
|
form_frame.pack()
|
||||||
def on_signup(self):
|
|
||||||
self.clear_errors()
|
|
||||||
|
|
||||||
|
def on_signup(self):
|
||||||
# Retrieve values from entry fields
|
# Retrieve values from entry fields
|
||||||
username = self.username_entry.get()
|
username = self.username_entry.get()
|
||||||
email = self.email_entry.get()
|
email = self.email_entry.get()
|
||||||
password = self.password_entry.get()
|
password = self.password_entry.get()
|
||||||
|
|
||||||
# Validate username length
|
model = SignupModel(username=username, email=email, password=password)
|
||||||
if len(username) < 8:
|
validation, errors = model.validate()
|
||||||
self.username_error_var.set("Username must be at least 8 characters.")
|
|
||||||
self.username_error_label.grid(row=0, column=3, pady=5, sticky='w')
|
|
||||||
|
|
||||||
# Validate email format using a simple regex
|
if not validation:
|
||||||
email_pattern = re.compile(r"[^@]+@[^@]+\.[^@]+")
|
self.error_var.set(errors[0])
|
||||||
if not email_pattern.match(email):
|
self.error_label.grid(row=0, column=0, pady=5)
|
||||||
self.email_error_var.set("Invalid email format.")
|
|
||||||
self.email_error_label.grid(row=1, column=3, pady=5, sticky='w')
|
|
||||||
|
|
||||||
# Validate password length and presence of numbers
|
|
||||||
if len(password) < 8:
|
|
||||||
self.password_error_var.set("Password must be at least 8 characters")
|
|
||||||
self.password_error_label.grid(row=2, column=3, pady=5, sticky='w')
|
|
||||||
|
|
||||||
# Print or handle the values as needed
|
# Print or handle the values as needed
|
||||||
print(f"Username: {username}, Email: {email}, Password: {password}")
|
print(f"Username: {username}, Email: {email}, Password: {password}")
|
||||||
|
|
||||||
def clear_errors(self):
|
|
||||||
# Clear all error messages
|
|
||||||
self.username_error_var.set("")
|
|
||||||
self.username_error_label.grid_forget()
|
|
||||||
self.email_error_var.set("")
|
|
||||||
self.email_error_label.grid_forget()
|
|
||||||
self.password_error_var.set("")
|
|
||||||
self.password_error_label.grid_forget()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user