Updated client app with 2 new views
This commit is contained in:
parent
4689b3bae5
commit
5080ab5c8d
334
client/app.py
334
client/app.py
@ -1,128 +1,208 @@
|
||||
import tkinter as tk
|
||||
import requests
|
||||
|
||||
FONT= ("Verdana", 12)
|
||||
FONT_LARGE= ("Verdana", 20)
|
||||
URL = "http://localhost:8000/api/authenticate"
|
||||
TOKEN = ""
|
||||
|
||||
class SmartPicasso(tk.Tk):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
tk.Tk.__init__(self, *args, **kwargs)
|
||||
container = tk.Frame(self)
|
||||
self.title('SmartPicasso')
|
||||
self.geometry('610x460')
|
||||
|
||||
container.pack(side="top", fill="both", expand = True)
|
||||
|
||||
container.grid_rowconfigure(0, weight=1)
|
||||
container.grid_columnconfigure(0, weight=1)
|
||||
|
||||
self.frames = {}
|
||||
|
||||
for F in (LoginPage, MainView, RegisterView):
|
||||
|
||||
frame = F(container, self)
|
||||
|
||||
self.frames[F] = frame
|
||||
|
||||
frame.grid(row=0, column=0, sticky="nsew")
|
||||
|
||||
self.show_frame(LoginPage)
|
||||
|
||||
def show_frame(self, cont):
|
||||
|
||||
frame = self.frames[cont]
|
||||
frame.tkraise()
|
||||
|
||||
|
||||
class LoginPage(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
|
||||
label1 = tk.Label(self, text='Login:', font=FONT)
|
||||
label1.pack()
|
||||
|
||||
input1 = tk.Entry(self)
|
||||
input1.pack()
|
||||
|
||||
label2 = tk.Label(self, text='Password:', font=FONT)
|
||||
label2.pack()
|
||||
|
||||
input2 = tk.Entry(self)
|
||||
input2.pack()
|
||||
|
||||
button = tk.Button(self, text="Login", font=FONT, command=lambda: self.login(controller, input1.get(), input2.get()))
|
||||
button.pack()
|
||||
|
||||
button2 = tk.Button(self, text="Register", font=FONT, command=lambda: controller.show_frame(RegisterView))
|
||||
button2.pack()
|
||||
|
||||
def login(self, controller, login, passw,):
|
||||
print(login)
|
||||
print(passw)
|
||||
data = {
|
||||
"email": str(login),
|
||||
"password": str(passw)
|
||||
}
|
||||
resp = requests.post(URL, json=data)
|
||||
print(resp)
|
||||
if (resp.status_code==200):
|
||||
response=resp.json()
|
||||
TOKEN = response['token']
|
||||
controller.show_frame(MainView)
|
||||
else:
|
||||
print("bad pass")
|
||||
badPassLabel = tk.Label(self, text='Wrong login/password!', font=FONT)
|
||||
badPassLabel.pack()
|
||||
return()
|
||||
|
||||
|
||||
class MainView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
label_u = tk.Label(self, text="Main menu", font=FONT)
|
||||
label_u.pack(pady=10,padx=10)
|
||||
|
||||
|
||||
class RegisterView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
label_u = tk.Label(self, text="Register", font=FONT)
|
||||
label_u.pack(pady=10,padx=10)
|
||||
|
||||
label1 = tk.Label(self, text='Login:', font=FONT)
|
||||
label1.pack()
|
||||
|
||||
input1 = tk.Entry(self)
|
||||
input1.pack()
|
||||
|
||||
label2 = tk.Label(self, text='Password:', font=FONT)
|
||||
label2.pack()
|
||||
|
||||
input2 = tk.Entry(self)
|
||||
input2.pack()
|
||||
|
||||
label3 = tk.Label(self, text='Email:', font=FONT)
|
||||
label3.pack()
|
||||
|
||||
input3 = tk.Entry(self)
|
||||
input3.pack()
|
||||
|
||||
button = tk.Button(self, text="Register", font=FONT, command=lambda: controller.show_frame(RegisterView))
|
||||
button.pack()
|
||||
|
||||
|
||||
app = SmartPicasso()
|
||||
import tkinter as tk
|
||||
import requests
|
||||
|
||||
FONT= ("Verdana", 12)
|
||||
FONT_B= ("Verdana", 12, 'bold')
|
||||
FONT_LARGE= ("Verdana", 20)
|
||||
URL = "http://localhost:8000/api/authenticate"
|
||||
URL_REGISTER = "http://localhost:8000/api/register"
|
||||
URL_PROFILE = "http://localhost:8000/api/profile"
|
||||
TOKEN = ""
|
||||
USERNAME = ""
|
||||
FIRST_NAME = ""
|
||||
LAST_NAME = ""
|
||||
|
||||
|
||||
class SmartPicasso(tk.Tk):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
tk.Tk.__init__(self, *args, **kwargs)
|
||||
container = tk.Frame(self)
|
||||
self.title('SmartPicasso')
|
||||
self.geometry('610x460')
|
||||
|
||||
container.pack(side="top", fill="both", expand = True)
|
||||
|
||||
container.grid_rowconfigure(0, weight=1)
|
||||
container.grid_columnconfigure(0, weight=1)
|
||||
|
||||
self.frames = {}
|
||||
|
||||
for F in (LoginView, MainView, RegisterView, ProfileView):
|
||||
|
||||
frame = F(container, self)
|
||||
|
||||
self.frames[F] = frame
|
||||
|
||||
frame.grid(row=0, column=0, sticky="nsew")
|
||||
|
||||
self.show_frame(LoginView)
|
||||
|
||||
def show_frame(self, cont):
|
||||
|
||||
frame = self.frames[cont]
|
||||
frame.tkraise()
|
||||
|
||||
|
||||
class LoginView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
|
||||
label1 = tk.Label(self, text='Login:', font=FONT)
|
||||
label1.pack()
|
||||
|
||||
input1 = tk.Entry(self)
|
||||
input1.pack()
|
||||
|
||||
label2 = tk.Label(self, text='Password:', font=FONT)
|
||||
label2.pack()
|
||||
|
||||
input2 = tk.Entry(self, show="*")
|
||||
input2.pack()
|
||||
|
||||
button = tk.Button(self, text="Login", font=FONT, command=lambda: self.login(controller, input1.get(), input2.get()))
|
||||
button.pack()
|
||||
|
||||
button2 = tk.Button(self, text="Register", font=FONT, command=lambda: controller.show_frame(RegisterView))
|
||||
button2.pack()
|
||||
|
||||
def login(self, controller, login, passw,):
|
||||
print(login)
|
||||
print(passw)
|
||||
data = {
|
||||
"email": str(login),
|
||||
"password": str(passw)
|
||||
}
|
||||
resp = requests.post(URL, json=data)
|
||||
print(resp)
|
||||
if (resp.status_code==200):
|
||||
response=resp.json()
|
||||
TOKEN = response['token']
|
||||
|
||||
hed = {'Authorization': 'Bearer ' + TOKEN}
|
||||
resp = requests.get(URL_PROFILE, headers=hed)
|
||||
response=resp.json()
|
||||
USERNAME = response['profile']['username']
|
||||
FIRST_NAME = response['profile']['first_name']
|
||||
LAST_NAME = response['profile']['last_name']
|
||||
|
||||
controller.show_frame(MainView)
|
||||
else:
|
||||
print("bad pass")
|
||||
badPassLabel = tk.Label(self, text='Wrong login/password!', font=FONT)
|
||||
badPassLabel.pack()
|
||||
return()
|
||||
|
||||
|
||||
class MainView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
self.profile = ProfileView()
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
label_u = tk.Label(self, text="Main menu", font=FONT)
|
||||
label_u.pack(pady=10,padx=10)
|
||||
|
||||
button_profile = tk.Button(self, text="My profile", font=FONT, command=lambda: controller.show_frame(ProfileView))
|
||||
button_profile.pack()
|
||||
|
||||
|
||||
class RegisterView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
label_u = tk.Label(self, text="Register", font=FONT)
|
||||
label_u.pack(pady=10,padx=10)
|
||||
|
||||
label0 = tk.Label(self, text='Email:', font=FONT)
|
||||
label0.pack()
|
||||
|
||||
input0 = tk.Entry(self)
|
||||
input0.pack()
|
||||
|
||||
label1 = tk.Label(self, text='Login:', font=FONT)
|
||||
label1.pack()
|
||||
|
||||
input1 = tk.Entry(self)
|
||||
input1.pack()
|
||||
|
||||
label2 = tk.Label(self, text='Password:', font=FONT)
|
||||
label2.pack()
|
||||
|
||||
input2 = tk.Entry(self, show="*")
|
||||
input2.pack()
|
||||
|
||||
label3 = tk.Label(self, text='First name:', font=FONT)
|
||||
label3.pack()
|
||||
|
||||
input3 = tk.Entry(self)
|
||||
input3.pack()
|
||||
|
||||
label4 = tk.Label(self, text='Last name:', font=FONT)
|
||||
label4.pack()
|
||||
|
||||
input4 = tk.Entry(self)
|
||||
input4.pack()
|
||||
|
||||
button1 = tk.Button(self, text="Register", font=FONT, command=lambda: self.register(controller, input0.get(), input1.get(), input2.get(), input3.get(), input4.get()))
|
||||
button1.pack()
|
||||
|
||||
button2 = tk.Button(self, text="Cancel", font=FONT, command=lambda: controller.show_frame(LoginView))
|
||||
button2.pack()
|
||||
def register(self, controller, email, login, passw, name, lastname):
|
||||
data = {
|
||||
"email": str(email),
|
||||
"password": str(passw),
|
||||
"profile": {
|
||||
"username": str(login),
|
||||
"first_name": str(name),
|
||||
"last_name": str(lastname)
|
||||
}
|
||||
}
|
||||
print(data)
|
||||
resp = requests.post(URL_REGISTER, json=data)
|
||||
print(resp)
|
||||
if (resp.status_code==201):
|
||||
response=resp.json()
|
||||
controller.show_frame(LoginView)
|
||||
else:
|
||||
print("sth wrong")
|
||||
badPassLabel = tk.Label(self, text='Something went wrong!', font=FONT)
|
||||
badPassLabel.pack()
|
||||
return()
|
||||
|
||||
|
||||
class ProfileView(tk.Frame):
|
||||
|
||||
def __init__(self, parent, controller):
|
||||
|
||||
tk.Frame.__init__(self,parent)
|
||||
label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE)
|
||||
label.pack(pady=10,padx=10)
|
||||
label_l1 = tk.Label(self, text="Login:", font=FONT_B)
|
||||
label_l1.pack(pady=10,padx=10)
|
||||
label_l2 = tk.Label(self, text=USERNAME, font=FONT)
|
||||
label_l2.pack(pady=10,padx=10)
|
||||
label_n1 = tk.Label(self, text="Name:", font=FONT_B)
|
||||
label_n1.pack(pady=10,padx=10)
|
||||
label_n2 = tk.Label(self, text=FIRST_NAME, font=FONT)
|
||||
label_n2.pack(pady=10,padx=10)
|
||||
label_ln1 = tk.Label(self, text="Last name", font=FONT_B)
|
||||
label_ln1.pack(pady=10,padx=10)
|
||||
label_ln2 = tk.Label(self, text=LAST_NAME, font=FONT)
|
||||
label_ln2.pack(pady=10,padx=10)
|
||||
|
||||
|
||||
button_profile = tk.Button(self, text="Back", font=FONT, command=lambda: controller.show_frame(MainView))
|
||||
button_profile.pack()
|
||||
|
||||
|
||||
app = SmartPicasso()
|
||||
app.mainloop()
|
Loading…
Reference in New Issue
Block a user