Guest User

Untitled

a guest
Feb 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. import datetime
  2. import shelve
  3.  
  4.  
  5. class App:
  6. def __init__(self):
  7. self.dict_method = {'1': self.one, '2': self.two, '3': self.three, '4': self.four,
  8. '5': self.five, '6': self.six, '7': self.seven, '8': self.eight,
  9. '10': self.ten, 'help': self.show_menu}
  10. self.device_database = shelve.open('device_database')
  11. self.users_database = shelve.open('users_database')
  12. title = 'Devices management in company'
  13. print('#' * title.__len__())
  14. print(title)
  15. print('#' * title.__len__())
  16. self.show_menu()
  17.  
  18. def __call__(self):
  19. self.loop()
  20.  
  21. @staticmethod
  22. def show_menu():
  23. print('''
  24. Menu:
  25. 1 - show all devices
  26. 2 - show all users
  27. 3 - add new user
  28. 4 - add new device
  29. 5 - assign device to user
  30. 6 - un-assign device
  31. 7 - show device history
  32. 8 - show users devices
  33. 10 - exit
  34. help - show option
  35. ''')
  36.  
  37. def loop(self):
  38. try:
  39. choose = self.choose_option()
  40. while choose is not '10':
  41. self.dict_method[choose]()
  42. break
  43. self.loop()
  44. except KeyError:
  45. self.loop()
  46.  
  47. @staticmethod
  48. def choose_option():
  49. choose = input('Choose option: ')
  50. return choose
  51.  
  52. def add_device_to_database(self, device):
  53. self.device_database[device.company_number] = device
  54.  
  55. def add_user_to_database(self, user):
  56. self.users_database[user.user_name] = user
  57.  
  58. def one(self):
  59. for key in self.device_database:
  60. obj = self.device_database[key]
  61. print(obj.__str__())
  62.  
  63. def two(self):
  64. for key in self.users_database:
  65. obj = self.users_database[key]
  66. print(obj.__str__())
  67.  
  68. def three(self):
  69. user_name = input('Enter users name: ').upper()
  70. phone_number = input('Enter users phone number: ').upper()
  71. user = User(user_name=user_name, phone_number=phone_number)
  72. self.add_user_to_database(user)
  73.  
  74. def four(self):
  75. device_type = input('Enter devices type (tablet or notebook or phone): ').upper()
  76. model = input('Enter devices model: ').upper()
  77. serial_number = input('Enter devices serial number: ').upper()
  78. company_number = input('Enter devices company number: ').upper()
  79. if device_type == 'TABLET':
  80. device = Tablet(model_device=model, serial_number=serial_number, company_number=company_number)
  81. elif device_type == 'NOTEBOOK':
  82. device = Computer(model_device=model, serial_number=serial_number, company_number=company_number)
  83. elif device_type == 'PHONE':
  84. device = Phone(model_device=model, serial_number=serial_number, company_number=company_number)
  85. else:
  86. raise TypeError
  87. self.add_device_to_database(device=device)
  88.  
  89. def five(self):
  90. devices_company_number = input('Enter devices company number: ').upper()
  91. user_name = input('Enter users name: ').upper()
  92. try:
  93. device = self.device_database[devices_company_number]
  94. device.assign_to_user(self.users_database[user_name])
  95. self.device_database[device.company_number] = device
  96. except KeyError:
  97. print('No user or No device')
  98.  
  99. def six(self):
  100. device_company_number = input('Enter devices company number: ').upper()
  101. try:
  102. device = self.device_database[device_company_number]
  103. device.unassigned()
  104. self.device_database[device.company_number] = device
  105. except KeyError:
  106. print('No device')
  107.  
  108. def seven(self):
  109. device_company_number = input('Enter devices company number: ').upper()
  110. try:
  111. self.device_database[device_company_number].show_history()
  112. except KeyError:
  113. print('No device')
  114.  
  115. def eight(self):
  116. user_name = input('Enter users name: ').upper()
  117. for key in self.device_database:
  118. if self.device_database[key].user.__str__() == self.users_database[user_name].user_name:
  119. print(self.device_database[key].__str__())
  120.  
  121. def ten(self):
  122. ask = input('Confirm Y/N: ').upper()
  123. if ask is 'Y':
  124. exit()
  125. else:
  126. self.loop()
  127.  
  128.  
  129. class User:
  130. def __init__(self, user_name, phone_number):
  131. self.user_name = user_name
  132. self.phone_number = phone_number
  133.  
  134. def __str__(self):
  135. return self.user_name
  136.  
  137.  
  138. class Device:
  139. _deviceDict = {1: 'available', 2: 'unavailable'}
  140.  
  141. def __init__(self, model_device, serial_number, company_number, type_device):
  142. self.model = model_device
  143. self.serial_number = serial_number
  144. self.company_number = company_number
  145. self.user = None
  146. self.type = type_device
  147. self.history = []
  148. self.availability = Device._deviceDict[1]
  149.  
  150. def __str__(self):
  151. return 'Model: ' + self.model, 'S/N: ' + self.serial_number, 'Company No: ' + self.company_number, 'User: ' + self.user.__str__()
  152.  
  153. def create_event(self):
  154. event = 'data_time: ' + str(datetime.datetime.now()), 'status: ' + self.availability, \
  155. 'user: ' + str(self.user)
  156. return event
  157.  
  158. def assign_to_user(self, user):
  159. self.user = user
  160. self.availability = Device._deviceDict[2]
  161. self.history.append(self.create_event())
  162.  
  163. def unassigned(self):
  164.  
  165. self.user = None
  166. self.availability = Device._deviceDict[1]
  167. self.history.append(self.create_event())
  168.  
  169. def show_history(self):
  170. for item in reversed(self.history):
  171. print(item)
  172.  
  173. def checking_availability(self):
  174. available = False
  175. if self.availability is Device._deviceDict[1]:
  176. available = True
  177. return available
  178.  
  179.  
  180. class Tablet(Device):
  181. def __init__(self, model_device, serial_number, company_number):
  182. Device.__init__(self, model_device=model_device, serial_number=serial_number,
  183. company_number=company_number, type_device='tablet')
  184.  
  185.  
  186. class Computer(Device):
  187. def __init__(self, model_device, serial_number, company_number):
  188. Device.__init__(self, model_device=model_device, serial_number=serial_number,
  189. company_number=company_number, type_device='notebook')
  190.  
  191.  
  192. class Phone(Device):
  193. def __init__(self, model_device, serial_number, company_number):
  194. Device.__init__(self, model_device=model_device, serial_number=serial_number,
  195. company_number=company_number, type_device='telephone')
  196.  
  197.  
  198. if __name__ == '__main__':
  199. app = App()
  200. app()
Add Comment
Please, Sign In to add comment