Advertisement
Guest User

Untitled

a guest
May 8th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.88 KB | None | 0 0
  1. from kivy.app import App
  2. from kivy.uix.button import Button
  3. from kivy.uix.dropdown import DropDown
  4. from kivy.uix.popup import Popup
  5. from kivy.uix.spinner import Spinner
  6. from kivy.base import runTouchApp
  7. from kivy.uix.floatlayout import FloatLayout
  8. from kivy.uix.screenmanager import ScreenManager, Screen
  9.  
  10. import time
  11. import Motor_Control
  12. import RFID_Control
  13. import Key_Control
  14.  
  15. username_bank = ['jde24', 'jjh34', 'ad39', 'bjd44', 'admin']
  16. password_bank = ['jde24', 'jjh34', 'ad39', 'bjd44', 'admin']
  17. access_level_bank = [1, 2, 3, 4, 5]
  18.  
  19. ## Pull key information from database set up in Key_Control.py
  20. key_bank = []
  21. key_bank_level_1 = []
  22. key_bank_level_2 = []
  23. key_bank_level_3 = []
  24. key_bank_level_4 = []
  25. key_bank_level_5 = []
  26.  
  27. for i in range(len(Key_Control.listOfAllRings)):
  28.     key_bank.append(Key_Control.listOfAllRings[i].name)
  29.     if Key_Control.listOfAllRings[i].accessLevelRequired == 1:
  30.         key_bank_level_1.append(Key_Control.listOfAllRings[i].name)
  31.     elif Key_Control.listOfAllRings[i].accessLevelRequired == 2:
  32.         key_bank_level_2.append(Key_Control.listOfAllRings[i].name)
  33.     elif Key_Control.listOfAllRings[i].accessLevelRequired == 3:
  34.         key_bank_level_3.append(Key_Control.listOfAllRings[i].name)
  35.     elif Key_Control.listOfAllRings[i].accessLevelRequired == 4:
  36.         key_bank_level_4.append(Key_Control.listOfAllRings[i].name)
  37.     elif Key_Control.listOfAllRings[i].accessLevelRequired == 5:
  38.         key_bank_level_5.append(Key_Control.listOfAllRings[i].name)
  39.     else:
  40.         print("Error: Key ring has invalid security level set")
  41.  
  42. key_bank_level_2 = key_bank_level_1 + key_bank_level_2
  43. key_bank_level_3 = key_bank_level_2 + key_bank_level_3
  44. key_bank_level_4 = key_bank_level_3 + key_bank_level_4
  45. key_bank_level_5 = key_bank_level_4 + key_bank_level_5
  46.  
  47. #key_bank = ['Key 1', 'Key 2', 'Key 3', 'Key 4', 'Key 5', 'Key 6', 'Key 7', 'Key 8', 'Key 9', 'Key 10']
  48. #key_bank_level_1 = ['Key 1', 'Key 2', 'Key 3']
  49. #key_bank_level_2 = key_bank_level_1 + ['Key 4', 'Key 5']
  50. #key_bank_level_3 = key_bank_level_2 + ['Key 6', 'Key 7']
  51. #key_bank_level_4 = key_bank_level_3 + ['Key 8', 'Key 9']
  52. #key_bank_level_5 = key_bank_level_4 + ['Key 10']
  53.  
  54. class ReturnKeyPopup(Popup):
  55.     pass
  56.  
  57. class RetrieveKeyPopup(Popup):
  58.     pass
  59.  
  60. class IdentiKeyRoot(FloatLayout):
  61.     def __init__(self, **kwargs):
  62.         super(IdentiKeyRoot, self).__init__(**kwargs)
  63.  
  64.     def clearErrorLabel(self):
  65.         self.ids.key_screen.ids.error_label.text = ""
  66.  
  67.     def setErrorLabel(self, error):
  68.         if error == "No key returned":
  69.                 self.ids.key_screen.ids.error_label.text = "No key returned!"
  70.         elif error == "Invalid key returned":
  71.                 self.ids.key_screen.ids.error_label.text = "Invalid key returned!"
  72.         elif error == "Key detected, but should be removed":
  73.                 self.ids.key_screen.ids.error_label.text = "Key detected, but should be removed!"
  74.         elif error == "Invalid Selection":
  75.                 self.ids.key_screen.ids.error_label.text = "Unknown selection!"
  76.         elif error == "No key selection":
  77.                 self.ids.key_screen.ids.error_label.text = "Please select a key!"
  78.         elif error == "Key already checked out":
  79.                 self.ids.key_screen.ids.error_label.text = "Key already checked out!"        
  80.  
  81.     def checkInRing(self):
  82.         temp = Key_Control.conv.moveEmptyHookToEntry()
  83.         ## if no hooks available, do not continue return process
  84.         if temp == -1:
  85.             return
  86.         ## else, if hooks available, continue
  87.         a_popup = ReturnKeyPopup()
  88.         a_popup.open()
  89.  
  90.     def checkInRingDismiss(self):
  91.         tempID = Key_Control.conv.IDRingAtEntry()
  92.         ## if no key detected at entry point
  93.         if tempID == -1:
  94.             ## no key was detected in entry. Do not update data.
  95.             print("Error: No key returned")
  96.             self.setErrorLabel("No key returned")
  97.         else:
  98.             ## if KNOWN key at entry point -> update conveyor data
  99.             try:
  100.                 self.clearErrorLabel()
  101.                 returnedKey = Key_Control.fullRingDataFromID(tempID)
  102.                 Key_Control.conv.addRingData(returnedKey.name, Key_Control.conv.hookAtEntry)
  103.                 Key_Control.conv.moveEmptyHookToEntry()
  104.                 print("Key with ID " + str(tempID) + " returned to IdentiKey")
  105.             ## if unknown key at entry point, do not update data
  106.             except AttributeError:
  107.                 print("Error: Invalid key returned")
  108.                 self.setErrorLabel("Invalid key returned")
  109.  
  110.     def checkOutRing(self, ringName):
  111.         if ringName == 'Select Key:':
  112.             #set label to 'Please select a key!'
  113.             self.setErrorLabel('No key selection')
  114.         ## If key exists in database, but is not currently in IdentiKey
  115.         if Key_Control.fullRingDataFromName(ringName) in Key_Control.listOfAllRings \
  116.            and ( not Key_Control.conv.isRingOnConveyor(ringName) ):
  117.             #set label to 'Key already checked out!'
  118.             self.setErrorLabel('Key already checked out')
  119.         ## if key is on conveyor
  120.         elif Key_Control.conv.isRingOnConveyor(ringName):
  121.             self.clearErrorLabel()
  122.             Key_Control.conv.moveRingToEntry(ringName)
  123.             b_popup = RetrieveKeyPopup()
  124.             b_popup.open()
  125.         else:
  126.             #set label to 'Invalid Selection?'
  127.             self.setErrorLabel('Invalid Selection')
  128.  
  129.     def checkOutRingDismiss(self):
  130.         tempID = Key_Control.conv.IDRingAtEntry()
  131.         ## if key succesfully removed, update data
  132.         if tempID == -1:
  133.             print("Key succesfully removed")
  134.             self.clearErrorLabel()
  135.             ## remove the data of the ring that was at the entry position
  136.             Key_Control.conv.removeRingData(Key_Control.conv.hooks[Key_Control.conv.hookAtEntry].name, Key_Control.conv.hookAtEntry)
  137.             Key_Control.conv.moveEmptyHookToEntry()
  138.         ## if key detected, do not update data
  139.         else:
  140.             #Key_Control.conv.moveEmptyHookToEntry()
  141.             self.checkOutRing(Key_Control.conv.hooks[Key_Control.conv.hookAtEntry].name)
  142.             print("Error: Key detected, but should be removed")
  143.             self.setErrorLabel("Key detected, but should be removed")
  144.     def log_out(self):
  145.         self.ids.login_screen.ids.username_entry.text = ""
  146.         self.ids.login_screen.ids.password_entry.text = ""
  147.         self.ids.add_user_screen.ids.new_user_success_text.text = ""
  148.         self.ids.key_screen.ids.key_menu.values = ['']
  149.         self.ids.key_screen.ids.key_menu.text = 'Select Key:'
  150.         self.ids.key_screen.ids.error_label.text = ""
  151.         self.ids.screen_manager.current = "Login_Screen"
  152.  
  153.     def update_welcome_text(self, username):
  154.         self.ids.key_screen.ids.welcome_text.text = "Welcome, " + username.strip() + "! Access Level: " + \
  155.                                                     str(access_level_bank[username_bank.index(username.strip())])
  156.  
  157.     def update_key_menu(self, username):
  158.         if access_level_bank[username_bank.index(username)] == 1:
  159.             self.ids.key_screen.ids.key_menu.values = key_bank_level_1
  160.         elif access_level_bank[username_bank.index(username)] == 2:
  161.             self.ids.key_screen.ids.key_menu.values = key_bank_level_2
  162.         elif access_level_bank[username_bank.index(username)] == 3:
  163.             self.ids.key_screen.ids.key_menu.values = key_bank_level_3
  164.         elif access_level_bank[username_bank.index(username)] == 4:
  165.             self.ids.key_screen.ids.key_menu.values = key_bank_level_4
  166.         elif access_level_bank[username_bank.index(username)] == 5:
  167.             self.ids.key_screen.ids.key_menu.values = key_bank_level_5
  168.  
  169.     def check_login_info(self, username, password):
  170.         if (username.strip() not in username_bank) or \
  171.                 (password.strip() not in password_bank) or \
  172.                 (username == "") or (password == ""):
  173.             self.ids.login_screen.ids.invalid_text.text = "Access denied!"
  174.             self.ids.login_screen.ids.username_entry.text = ""
  175.             self.ids.login_screen.ids.password_entry.text = ""
  176.         elif (username == 'admin') and (password == 'admin'):
  177.             self.ids.screen_manager.current = "Admin_Screen"
  178.             self.ids.login_screen.ids.invalid_text.text = ""
  179.         elif username_bank.index(username.strip()) == password_bank.index(password.strip()):
  180.             self.ids.login_screen.ids.invalid_text.text = ""
  181.             self.update_welcome_text(username)
  182.             self.update_key_menu(username)
  183.             self.ids.screen_manager.current = "Key_Screen"
  184.         else:
  185.             self.ids.login_screen.ids.invalid_text.text = "Access denied!"
  186.  
  187.     def add_new_user(self, new_username, new_password, new_access_level):
  188.         if new_username in username_bank:
  189.             self.ids.add_user_screen.ids.new_user_success_text.text = "User already exists!"
  190.         if (new_username == "") or \
  191.                 (new_password == "") or \
  192.                 (not new_access_level.isdigit()):
  193.             self.ids.add_user_screen.ids.new_user_success_text.text = "Invalid Entry!"
  194.         else:
  195.             username_bank.append(new_username)
  196.             password_bank.append(new_password)
  197.             access_level_bank.append(int(new_access_level))
  198.             self.ids.add_user_screen.ids.new_username_entry.text = ""
  199.             self.ids.add_user_screen.ids.new_password_entry.text = ""
  200.             self.ids.add_user_screen.ids.new_access_level_entry.text = ""
  201.             self.ids.add_user_screen.ids.new_user_success_text.text = "User successfully registered!"
  202.  
  203.     def remove_user(self, remove_username, remove_password):
  204.         if (remove_username == "") or \
  205.                 (remove_password == ""):
  206.             self.ids.remove_user_screen.ids.remove_user_success_text.text = "Invalid Entry!"
  207.         elif (remove_username not in username_bank) or \
  208.                 (remove_password not in password_bank):
  209.             self.ids.remove_user_screen.ids.remove_user_success_text.text = "User does not exist!"
  210.         elif username_bank.index(remove_username.strip()) == password_bank.index(remove_password.strip()):
  211.             access_level_bank.pop(username_bank.index(remove_username))
  212.             username_bank.remove(remove_username)
  213.             password_bank.remove(remove_password)
  214.             self.ids.remove_user_screen.ids.remove_user_success_text.text = "User removed successfully!"
  215.             self.ids.remove_user_screen.ids.remove_username_entry.text = ""
  216.             self.ids.remove_user_screen.ids.remove_password_entry.text = ""
  217.         else:
  218.             self.ids.remove_user_screen.ids.remove_user_success_text.text = "Invalid Entry!"
  219.  
  220.  
  221. class IdentiKeyApp(App):
  222.     def __init__(self, **kwargs):
  223.         super(IdentiKeyApp, self).__init__(**kwargs)
  224.  
  225.     def build(self):
  226.         return IdentiKeyRoot()
  227.  
  228. if __name__ == '__main__':
  229.     IdentiKeyApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement