예제 #1
0
 def open_menu_option(self, option):
     """
     Choosing server action in regard to given option by user
     :param option: Selected menu option
     """
     if option == ui.ServerMenu.add_terminal.number:
         self.show_add_terminal_ui()
     elif option == ui.ServerMenu.exit_menu.number:
         self.__server_active = False
     elif option == ui.ServerMenu.remove_terminal.number:
         self.show_remove_terminal_ui()
     elif option == ui.ServerMenu.add_worker.number:
         self.show_add_worker_ui()
     elif option == ui.ServerMenu.remove_worker.number:
         self.show_remove_worker_ui()
     elif option == ui.ServerMenu.add_card_to_worker.number:
         self.show_assign_card_ui()
     elif option == ui.ServerMenu.remove_worker_card.number:
         self.show_unassign_card_ui()
     elif option == ui.ServerMenu.show_workers.number:
         self.show_data(self.server.get_workers().values())
     elif option == ui.ServerMenu.show_logs.number:
         self.show_data(self.server.get_logs().values())
     elif option == ui.ServerMenu.show_terminals.number:
         self.show_data(self.server.get_terminals().values())
     elif option == ui.ServerMenu.generate_reports.number:
         self.show_reports_generate_menu()
     elif option == ui.ServerMenu.tracking_activity.number:
         self.show_tracking_activity_menu()
     else:
         self.incorrect_option_msg()
     ui.read_data(ui.WAIT_FOR_INPUT)
 def read_literal(prompt):
     literal = ui.read_data(prompt)
     while any(char.isdigit()
               for char in literal) or len(literal.strip()) < 2:
         ui.show_msg(ui.INCORRECT_LITERALS_INPUT)
         literal = ui.read_data(prompt)
     return literal.upper()
예제 #3
0
 def read_digit(prompt):
     """
     Read user input data until it is not empty and literal is digit
     :param prompt: Prompt text used in input
     :return: Digit literal
     """
     digit = ui.read_data(prompt)
     while not digit.isdigit():
         ui.show_msg(ui.INCORRECT_DIGIT_INPUT)
         digit = ui.read_data(prompt)
     return digit
예제 #4
0
 def read_literal(prompt):
     """
     Read user input data until is not empty and not single char and literal is not digit
     :param prompt: Prompt text used in input
     :return: Literal converted to upper case
     """
     literal = ui.read_data(prompt)
     while any(char.isdigit()
               for char in literal) or len(literal.strip()) < 2:
         ui.show_msg(ui.INCORRECT_LITERALS_INPUT)
         literal = ui.read_data(prompt)
     return literal.upper()
 def log_from_day_for_worker(self):
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     date = self.read_player_date_input()
     if date is not None:
         generated_data = self.server.report_log_from_day_worker(
             worker_id, True, date)
         self.show_data(generated_data)
 def show_unassign_card_ui(self):
     term_id = ui.read_data(ui.CARD_ID_INPUT)
     try:
         worker_id = self.server.unassign_card(term_id)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_CARD + worker_id)
 def show_remove_worker_ui(self):
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     try:
         self.server.remove_worker(worker_id)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_WORKER)
 def show_remove_terminal_ui(self):
     term_guid = ui.read_data(ui.TERM_GUID_INPUT)
     try:
         self.server.remove_term(term_guid)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_TERM)
 def work_time_from_day_for_worker(self):
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     date = self.read_player_date_input()
     if date is not None:
         generated_data = self.server.report_work_time_from_day_worker(
             worker_id, date)
         ui.show_msg(ui.SEPARATOR)
         ui.show_msg(generated_data)
         ui.show_msg(ui.SEPARATOR)
예제 #10
0
 def show_assign_card_ui(self):
     worker_guid = ui.read_data(ui.WORKER_ID_INPUT)
     card_guid = ServerController.read_digit(ui.CARD_ID_INPUT)
     try:
         self.server.assign_card(card_guid, worker_guid)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.ADDED_CARD)
예제 #11
0
 def show_add_terminal_ui(self):
     term_guid = ServerController.read_digit(ui.TERM_GUID_INPUT)
     term_name = ui.read_data(ui.TERM_NAME_INPUT)
     try:
         self.server.add_term(term_guid, term_name)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.ADDED_TERM)
예제 #12
0
 def log_from_day_for_worker(self):
     """
     Take day and worker GUID from user. Generate logs report for given day and worker GUID. Show generated data in UI
     """
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     date = self.read_player_date_input()
     if date is not None:
         generated_data = self.server.report_log_from_day_worker(
             worker_id, True, date)
         self.show_data(generated_data)
예제 #13
0
 def show_unassign_card_ui(self):
     """
     Show UI for unassigning card from worker. If parameters from user are correct then unassign card from worker
     """
     term_id = ui.read_data(ui.CARD_ID_INPUT)
     try:
         worker_id = self.server.unassign_card(term_id)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_CARD + worker_id)
예제 #14
0
 def show_remove_worker_ui(self):
     """
     Show UI for removing worker. If parameters from user are correct then remove worker from database
     """
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     try:
         self.server.remove_worker(worker_id)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_WORKER)
예제 #15
0
 def show_remove_terminal_ui(self):
     """
     Show UI for removing terminal. If parameters from user are correct then remove terminal from database
     """
     term_guid = ui.read_data(ui.TERM_GUID_INPUT)
     try:
         self.server.remove_term(term_guid)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.REMOVED_TERM)
예제 #16
0
 def read_player_date_input():
     date_str = ui.read_data(ui.DATE_INPUT)
     if date_str == "":
         return datetime.now()
     try:
         date = datetime.strptime(date_str, "%Y-%m-%d")
         return date
     except ValueError:
         ui.show_msg(ui.INCORRECT_DATE_FORMAT +
                     datetime.now().date().__str__())
         return None
예제 #17
0
 def show_add_terminal_ui(self):
     """
     Show UI for adding new terminal. If parameters from user are correct then add new terminal to database
     """
     term_guid = ServerController.read_digit(ui.TERM_GUID_INPUT)
     term_name = ui.read_data(ui.TERM_NAME_INPUT)
     try:
         self.server.add_term(term_guid, term_name)
     except DataInputError as err:
         ui.show_msg(err.message)
     else:
         ui.show_msg(ui.ADDED_TERM)
예제 #18
0
 def work_time_from_day_for_worker(self):
     """
     Take day and worker GUID from user. Generate work time report from given day and worker GUI.
     Show generated data in UI
     """
     worker_id = ui.read_data(ui.WORKER_ID_INPUT)
     date = self.read_player_date_input()
     if date is not None:
         generated_data = self.server.report_work_time_from_day_worker(
             worker_id, date)
         ui.show_msg(ui.SEPARATOR)
         ui.show_msg(generated_data)
         ui.show_msg(ui.SEPARATOR)
예제 #19
0
 def read_player_date_input():
     """
     Read player data input. If incorrect value or format then show message about it in UI
     :return: Readed date <datatime> or None if give incorrect
     """
     date_str = ui.read_data(ui.DATE_INPUT)
     if date_str == "":
         return datetime.now()
     try:
         date = datetime.strptime(date_str, "%Y-%m-%d")
         return date
     except ValueError:
         ui.show_msg(ui.INCORRECT_DATE_FORMAT +
                     datetime.now().date().__str__())
         return None
예제 #20
0
 def read_digit(prompt):
     digit = ui.read_data(prompt)
     while not digit.isdigit():
         ui.show_msg(ui.INCORRECT_DIGIT_INPUT)
         digit = ui.read_data(prompt)
     return digit