Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import shelve
- class App:
- def __init__(self):
- self.dict_method = {'1': self.one, '2': self.two, '3': self.three, '4': self.four,
- '5': self.five, '6': self.six, '7': self.seven, '8': self.eight,
- '10': self.ten, 'help': self.show_menu}
- self.device_database = shelve.open('device_database')
- self.users_database = shelve.open('users_database')
- title = 'Devices management in company'
- print('#' * title.__len__())
- print(title)
- print('#' * title.__len__())
- self.show_menu()
- def __call__(self):
- self.loop()
- @staticmethod
- def show_menu():
- print('''
- Menu:
- 1 - show all devices
- 2 - show all users
- 3 - add new user
- 4 - add new device
- 5 - assign device to user
- 6 - un-assign device
- 7 - show device history
- 8 - show users devices
- 10 - exit
- help - show option
- ''')
- def loop(self):
- try:
- choose = self.choose_option()
- while choose is not '10':
- self.dict_method[choose]()
- break
- self.loop()
- except KeyError:
- self.loop()
- @staticmethod
- def choose_option():
- choose = input('Choose option: ')
- return choose
- def add_device_to_database(self, device):
- self.device_database[device.company_number] = device
- def add_user_to_database(self, user):
- self.users_database[user.user_name] = user
- def one(self):
- for key in self.device_database:
- obj = self.device_database[key]
- print(obj.__str__())
- def two(self):
- for key in self.users_database:
- obj = self.users_database[key]
- print(obj.__str__())
- def three(self):
- user_name = input('Enter users name: ').upper()
- phone_number = input('Enter users phone number: ').upper()
- user = User(user_name=user_name, phone_number=phone_number)
- self.add_user_to_database(user)
- def four(self):
- device_type = input('Enter devices type (tablet or notebook or phone): ').upper()
- model = input('Enter devices model: ').upper()
- serial_number = input('Enter devices serial number: ').upper()
- company_number = input('Enter devices company number: ').upper()
- if device_type == 'TABLET':
- device = Tablet(model_device=model, serial_number=serial_number, company_number=company_number)
- elif device_type == 'NOTEBOOK':
- device = Computer(model_device=model, serial_number=serial_number, company_number=company_number)
- elif device_type == 'PHONE':
- device = Phone(model_device=model, serial_number=serial_number, company_number=company_number)
- else:
- raise TypeError
- self.add_device_to_database(device=device)
- def five(self):
- devices_company_number = input('Enter devices company number: ').upper()
- user_name = input('Enter users name: ').upper()
- try:
- device = self.device_database[devices_company_number]
- device.assign_to_user(self.users_database[user_name])
- self.device_database[device.company_number] = device
- except KeyError:
- print('No user or No device')
- def six(self):
- device_company_number = input('Enter devices company number: ').upper()
- try:
- device = self.device_database[device_company_number]
- device.unassigned()
- self.device_database[device.company_number] = device
- except KeyError:
- print('No device')
- def seven(self):
- device_company_number = input('Enter devices company number: ').upper()
- try:
- self.device_database[device_company_number].show_history()
- except KeyError:
- print('No device')
- def eight(self):
- user_name = input('Enter users name: ').upper()
- for key in self.device_database:
- if self.device_database[key].user.__str__() == self.users_database[user_name].user_name:
- print(self.device_database[key].__str__())
- def ten(self):
- ask = input('Confirm Y/N: ').upper()
- if ask is 'Y':
- exit()
- else:
- self.loop()
- class User:
- def __init__(self, user_name, phone_number):
- self.user_name = user_name
- self.phone_number = phone_number
- def __str__(self):
- return self.user_name
- class Device:
- _deviceDict = {1: 'available', 2: 'unavailable'}
- def __init__(self, model_device, serial_number, company_number, type_device):
- self.model = model_device
- self.serial_number = serial_number
- self.company_number = company_number
- self.user = None
- self.type = type_device
- self.history = []
- self.availability = Device._deviceDict[1]
- def __str__(self):
- return 'Model: ' + self.model, 'S/N: ' + self.serial_number, 'Company No: ' + self.company_number, 'User: ' + self.user.__str__()
- def create_event(self):
- event = 'data_time: ' + str(datetime.datetime.now()), 'status: ' + self.availability, \
- 'user: ' + str(self.user)
- return event
- def assign_to_user(self, user):
- self.user = user
- self.availability = Device._deviceDict[2]
- self.history.append(self.create_event())
- def unassigned(self):
- self.user = None
- self.availability = Device._deviceDict[1]
- self.history.append(self.create_event())
- def show_history(self):
- for item in reversed(self.history):
- print(item)
- def checking_availability(self):
- available = False
- if self.availability is Device._deviceDict[1]:
- available = True
- return available
- class Tablet(Device):
- def __init__(self, model_device, serial_number, company_number):
- Device.__init__(self, model_device=model_device, serial_number=serial_number,
- company_number=company_number, type_device='tablet')
- class Computer(Device):
- def __init__(self, model_device, serial_number, company_number):
- Device.__init__(self, model_device=model_device, serial_number=serial_number,
- company_number=company_number, type_device='notebook')
- class Phone(Device):
- def __init__(self, model_device, serial_number, company_number):
- Device.__init__(self, model_device=model_device, serial_number=serial_number,
- company_number=company_number, type_device='telephone')
- if __name__ == '__main__':
- app = App()
- app()
Add Comment
Please, Sign In to add comment