Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.app import App
- from kivy.uix.button import Button
- from kivy.uix.dropdown import DropDown
- from kivy.uix.popup import Popup
- from kivy.uix.spinner import Spinner
- from kivy.base import runTouchApp
- from kivy.uix.floatlayout import FloatLayout
- from kivy.uix.screenmanager import ScreenManager, Screen
- import time
- import Motor_Control
- import RFID_Control
- import Key_Control
- username_bank = ['jde24', 'jjh34', 'ad39', 'bjd44', 'admin']
- password_bank = ['jde24', 'jjh34', 'ad39', 'bjd44', 'admin']
- access_level_bank = [1, 2, 3, 4, 5]
- ## Pull key information from database set up in Key_Control.py
- key_bank = []
- key_bank_level_1 = []
- key_bank_level_2 = []
- key_bank_level_3 = []
- key_bank_level_4 = []
- key_bank_level_5 = []
- for i in range(len(Key_Control.listOfAllRings)):
- key_bank.append(Key_Control.listOfAllRings[i].name)
- if Key_Control.listOfAllRings[i].accessLevelRequired == 1:
- key_bank_level_1.append(Key_Control.listOfAllRings[i].name)
- elif Key_Control.listOfAllRings[i].accessLevelRequired == 2:
- key_bank_level_2.append(Key_Control.listOfAllRings[i].name)
- elif Key_Control.listOfAllRings[i].accessLevelRequired == 3:
- key_bank_level_3.append(Key_Control.listOfAllRings[i].name)
- elif Key_Control.listOfAllRings[i].accessLevelRequired == 4:
- key_bank_level_4.append(Key_Control.listOfAllRings[i].name)
- elif Key_Control.listOfAllRings[i].accessLevelRequired == 5:
- key_bank_level_5.append(Key_Control.listOfAllRings[i].name)
- else:
- print("Error: Key ring has invalid security level set")
- key_bank_level_2 = key_bank_level_1 + key_bank_level_2
- key_bank_level_3 = key_bank_level_2 + key_bank_level_3
- key_bank_level_4 = key_bank_level_3 + key_bank_level_4
- key_bank_level_5 = key_bank_level_4 + key_bank_level_5
- #key_bank = ['Key 1', 'Key 2', 'Key 3', 'Key 4', 'Key 5', 'Key 6', 'Key 7', 'Key 8', 'Key 9', 'Key 10']
- #key_bank_level_1 = ['Key 1', 'Key 2', 'Key 3']
- #key_bank_level_2 = key_bank_level_1 + ['Key 4', 'Key 5']
- #key_bank_level_3 = key_bank_level_2 + ['Key 6', 'Key 7']
- #key_bank_level_4 = key_bank_level_3 + ['Key 8', 'Key 9']
- #key_bank_level_5 = key_bank_level_4 + ['Key 10']
- class ReturnKeyPopup(Popup):
- pass
- class RetrieveKeyPopup(Popup):
- pass
- class IdentiKeyRoot(FloatLayout):
- def __init__(self, **kwargs):
- super(IdentiKeyRoot, self).__init__(**kwargs)
- def clearErrorLabel(self):
- self.ids.key_screen.ids.error_label.text = ""
- def setErrorLabel(self, error):
- if error == "No key returned":
- self.ids.key_screen.ids.error_label.text = "No key returned!"
- elif error == "Invalid key returned":
- self.ids.key_screen.ids.error_label.text = "Invalid key returned!"
- elif error == "Key detected, but should be removed":
- self.ids.key_screen.ids.error_label.text = "Key detected, but should be removed!"
- elif error == "Invalid Selection":
- self.ids.key_screen.ids.error_label.text = "Unknown selection!"
- elif error == "No key selection":
- self.ids.key_screen.ids.error_label.text = "Please select a key!"
- elif error == "Key already checked out":
- self.ids.key_screen.ids.error_label.text = "Key already checked out!"
- def checkInRing(self):
- temp = Key_Control.conv.moveEmptyHookToEntry()
- ## if no hooks available, do not continue return process
- if temp == -1:
- return
- ## else, if hooks available, continue
- a_popup = ReturnKeyPopup()
- a_popup.open()
- def checkInRingDismiss(self):
- tempID = Key_Control.conv.IDRingAtEntry()
- ## if no key detected at entry point
- if tempID == -1:
- ## no key was detected in entry. Do not update data.
- print("Error: No key returned")
- self.setErrorLabel("No key returned")
- else:
- ## if KNOWN key at entry point -> update conveyor data
- try:
- self.clearErrorLabel()
- returnedKey = Key_Control.fullRingDataFromID(tempID)
- Key_Control.conv.addRingData(returnedKey.name, Key_Control.conv.hookAtEntry)
- Key_Control.conv.moveEmptyHookToEntry()
- print("Key with ID " + str(tempID) + " returned to IdentiKey")
- ## if unknown key at entry point, do not update data
- except AttributeError:
- print("Error: Invalid key returned")
- self.setErrorLabel("Invalid key returned")
- def checkOutRing(self, ringName):
- if ringName == 'Select Key:':
- #set label to 'Please select a key!'
- self.setErrorLabel('No key selection')
- ## If key exists in database, but is not currently in IdentiKey
- if Key_Control.fullRingDataFromName(ringName) in Key_Control.listOfAllRings \
- and ( not Key_Control.conv.isRingOnConveyor(ringName) ):
- #set label to 'Key already checked out!'
- self.setErrorLabel('Key already checked out')
- ## if key is on conveyor
- elif Key_Control.conv.isRingOnConveyor(ringName):
- self.clearErrorLabel()
- Key_Control.conv.moveRingToEntry(ringName)
- b_popup = RetrieveKeyPopup()
- b_popup.open()
- else:
- #set label to 'Invalid Selection?'
- self.setErrorLabel('Invalid Selection')
- def checkOutRingDismiss(self):
- tempID = Key_Control.conv.IDRingAtEntry()
- ## if key succesfully removed, update data
- if tempID == -1:
- print("Key succesfully removed")
- self.clearErrorLabel()
- ## remove the data of the ring that was at the entry position
- Key_Control.conv.removeRingData(Key_Control.conv.hooks[Key_Control.conv.hookAtEntry].name, Key_Control.conv.hookAtEntry)
- Key_Control.conv.moveEmptyHookToEntry()
- ## if key detected, do not update data
- else:
- #Key_Control.conv.moveEmptyHookToEntry()
- self.checkOutRing(Key_Control.conv.hooks[Key_Control.conv.hookAtEntry].name)
- print("Error: Key detected, but should be removed")
- self.setErrorLabel("Key detected, but should be removed")
- def log_out(self):
- self.ids.login_screen.ids.username_entry.text = ""
- self.ids.login_screen.ids.password_entry.text = ""
- self.ids.add_user_screen.ids.new_user_success_text.text = ""
- self.ids.key_screen.ids.key_menu.values = ['']
- self.ids.key_screen.ids.key_menu.text = 'Select Key:'
- self.ids.key_screen.ids.error_label.text = ""
- self.ids.screen_manager.current = "Login_Screen"
- def update_welcome_text(self, username):
- self.ids.key_screen.ids.welcome_text.text = "Welcome, " + username.strip() + "! Access Level: " + \
- str(access_level_bank[username_bank.index(username.strip())])
- def update_key_menu(self, username):
- if access_level_bank[username_bank.index(username)] == 1:
- self.ids.key_screen.ids.key_menu.values = key_bank_level_1
- elif access_level_bank[username_bank.index(username)] == 2:
- self.ids.key_screen.ids.key_menu.values = key_bank_level_2
- elif access_level_bank[username_bank.index(username)] == 3:
- self.ids.key_screen.ids.key_menu.values = key_bank_level_3
- elif access_level_bank[username_bank.index(username)] == 4:
- self.ids.key_screen.ids.key_menu.values = key_bank_level_4
- elif access_level_bank[username_bank.index(username)] == 5:
- self.ids.key_screen.ids.key_menu.values = key_bank_level_5
- def check_login_info(self, username, password):
- if (username.strip() not in username_bank) or \
- (password.strip() not in password_bank) or \
- (username == "") or (password == ""):
- self.ids.login_screen.ids.invalid_text.text = "Access denied!"
- self.ids.login_screen.ids.username_entry.text = ""
- self.ids.login_screen.ids.password_entry.text = ""
- elif (username == 'admin') and (password == 'admin'):
- self.ids.screen_manager.current = "Admin_Screen"
- self.ids.login_screen.ids.invalid_text.text = ""
- elif username_bank.index(username.strip()) == password_bank.index(password.strip()):
- self.ids.login_screen.ids.invalid_text.text = ""
- self.update_welcome_text(username)
- self.update_key_menu(username)
- self.ids.screen_manager.current = "Key_Screen"
- else:
- self.ids.login_screen.ids.invalid_text.text = "Access denied!"
- def add_new_user(self, new_username, new_password, new_access_level):
- if new_username in username_bank:
- self.ids.add_user_screen.ids.new_user_success_text.text = "User already exists!"
- if (new_username == "") or \
- (new_password == "") or \
- (not new_access_level.isdigit()):
- self.ids.add_user_screen.ids.new_user_success_text.text = "Invalid Entry!"
- else:
- username_bank.append(new_username)
- password_bank.append(new_password)
- access_level_bank.append(int(new_access_level))
- self.ids.add_user_screen.ids.new_username_entry.text = ""
- self.ids.add_user_screen.ids.new_password_entry.text = ""
- self.ids.add_user_screen.ids.new_access_level_entry.text = ""
- self.ids.add_user_screen.ids.new_user_success_text.text = "User successfully registered!"
- def remove_user(self, remove_username, remove_password):
- if (remove_username == "") or \
- (remove_password == ""):
- self.ids.remove_user_screen.ids.remove_user_success_text.text = "Invalid Entry!"
- elif (remove_username not in username_bank) or \
- (remove_password not in password_bank):
- self.ids.remove_user_screen.ids.remove_user_success_text.text = "User does not exist!"
- elif username_bank.index(remove_username.strip()) == password_bank.index(remove_password.strip()):
- access_level_bank.pop(username_bank.index(remove_username))
- username_bank.remove(remove_username)
- password_bank.remove(remove_password)
- self.ids.remove_user_screen.ids.remove_user_success_text.text = "User removed successfully!"
- self.ids.remove_user_screen.ids.remove_username_entry.text = ""
- self.ids.remove_user_screen.ids.remove_password_entry.text = ""
- else:
- self.ids.remove_user_screen.ids.remove_user_success_text.text = "Invalid Entry!"
- class IdentiKeyApp(App):
- def __init__(self, **kwargs):
- super(IdentiKeyApp, self).__init__(**kwargs)
- def build(self):
- return IdentiKeyRoot()
- if __name__ == '__main__':
- IdentiKeyApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement