Skip to content

Commit

Permalink
Add create new user page
Browse files Browse the repository at this point in the history
  • Loading branch information
philiptekin authored and DouglasHalse committed Dec 1, 2024
1 parent ba9f366 commit b4f5b61
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 4 deletions.
61 changes: 61 additions & 0 deletions GuiApp/kv/createUserScreen.kv
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<CreateUserScreen>:
BoxLayout:
orientation: 'vertical'
padding: [100, 100, 50, 100]
spacing: 25
size_hint: None, None
size: root.width, root.height

Label:
text: "Create New User"
font_size: 24
size_hint_y: None
height: 30

Label:
id: errorMessage
text: ""
color: 1, 0, 0, 1
opacity: 0

BoxLayout:
orientation: 'vertical'
size_hint: None, None
size: 400, 200
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
padding: [20, 20, 20, 20]
spacing: 10

TextInput:
id: registerFirstName
hint_text: "First Name"
size_hint_y: None
height: 40
padding: [10, 10]

TextInput:
id: registerLastName
hint_text: "Last Name"
size_hint_y: None
height: 40
padding: [10, 10]

TextInput:
id: registerEmployeeID
hint_text: "Employee id, Blipp Card (Optional)"
size_hint_y: None
height: 40
padding: [10, 10]

BoxLayout:
orientation: 'horizontal'
size_hint_y: None
height: 40
spacing: 20

Button:
text: "Register"
on_press: root.registerUser()
Button:
text: "Cancel"
on_press: root.cancel()
1 change: 1 addition & 0 deletions GuiApp/kv/main.kv
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
#:include kv/splashScreen.kv
#:include kv/#Screen.kv
#:include kv/mainUserScreen.kv
#:include kv/createUserScreen.kv
3 changes: 3 additions & 0 deletions GuiApp/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from widgets.splashScreen import SplashScreenWidget
from widgets.loginScreen import LoginScreenWidget
from widgets.mainUserScreen import MainUserScreenWidget
from widgets.createUserScreen import CreateUserScreen
from database import createAllTables, closeDatabase

# Size of Raspberry pi touchscreen
Expand All @@ -36,6 +37,8 @@ def build(self):
sm.add_widget(SplashScreenWidget(name="splashScreen"))
sm.add_widget(LoginScreenWidget(name="loginScreen"))
sm.add_widget(MainUserScreenWidget(name="mainUserPage"))
sm.add_widget(CreateUserScreen(name="createUserScreen"))

inspector.create_inspector(Window, sm)
return sm

Expand Down
44 changes: 44 additions & 0 deletions GuiApp/widgets/createUserScreen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from kivy.uix.screenmanager import Screen

from database import addPatron


class CreateUserScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)

def registerUser(self):
"""Handle the registration logic."""
registerFirstName = self.ids.registerFirstName.text.strip()
registerLastName = self.ids.registerLastName.text.strip()
registerEmployeeID = self.ids.registerEmployeeID.text.strip()

# Check for empty fields and show error messages
if not registerFirstName:
self.ids.errorMessage.text = "First Name cannot be empty!"
self.ids.errorMessage.opacity = 1
elif not registerLastName:
self.ids.errorMessage.text = "Last Name cannot be empty!"
self.ids.errorMessage.opacity = 1
else:
self.ids.errorMessage.opacity = 0
print(f"Registering user: {registerFirstName} {registerLastName}")
if registerEmployeeID:
print(f"Employee ID: {registerEmployeeID}")
else:
print("No Employee ID provided.")

addPatron(registerFirstName, registerLastName, registerEmployeeID)

self.manager.current = "loginScreen"

def cancel(self):
"""Handle the cancel action."""

self.ids.registerFirstName.text = ""
self.ids.registerLastName.text = ""
self.ids.registerEmployeeID.text = ""
self.ids.errorMessage.text = ""
self.ids.errorMessage.opacity = 0

self.manager.current = "loginScreen"
11 changes: 7 additions & 4 deletions GuiApp/widgets/#Screen.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.widget import Widget
from database import getAllPatrons, addPatron, UserData
from database import getAllPatrons, UserData


class BoxLayoutButton(ButtonBehavior, BoxLayout):
Expand All @@ -25,6 +25,11 @@ def __init__(self, **kwargs):
super().__init__(**kwargs)
self.AddUsersToLoginScreen()

def on_enter(self, *args):
self.clearUsersFromLoginScreen()
self.AddUsersToLoginScreen()
return super().on_enter(*args)

def AddUsersToLoginScreen(self):
userDataList = getAllPatrons()
if userDataList:
Expand All @@ -42,9 +47,7 @@ def clearUsersFromLoginScreen(self):

def createNewUserButtonClicked(self, *largs):
print("Adding test user")
addPatron("Test", "User", 100)
self.clearUsersFromLoginScreen()
self.AddUsersToLoginScreen()
self.manager.current = "createUserScreen"

def UserSelected(self, userId, *largs):
mainUserPage = self.manager.get_screen("mainUserPage")
Expand Down

0 comments on commit b4f5b61

Please # to comment.