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()
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 term_connecting_query(self, msg): """ If tracking activity is active then show message about connecting new terminal :param msg: message from terminal """ if self.tracking_activity: ui.show_msg(msg) ui.show_msg(ui.SEPARATOR)
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 show_tracking_activity_menu(self): self.tracking_activity = True ui.show_msg(ui.TRACKING_ACTIVITY_MENU) ui.show_msg(ui.SEPARATOR) user_input = input() while user_input != "0": user_input = input() self.tracking_activity = False
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)
def show_data(list_to_show): ui.show_msg(ui.SEPARATOR) if list_to_show.__len__() > 0: for element in list_to_show: ui.show_msg(element.__str__()) ui.show_msg(ui.SEPARATOR) else: ui.show_msg(ui.EMPTY) ui.show_msg(ui.SEPARATOR)
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)
def term_selected_query(self, msg, term_guid): """ Make terminal engaged and show message about selected terminal by connected client :param msg: message from terminal about selected terminal :param term_guid: GUID of selected terminal """ self.server.set_terminal_engage(term_guid, True) if self.tracking_activity: ui.show_msg(msg + term_guid) ui.show_msg(ui.SEPARATOR)
def term_disconnection_query(self, msg, term_guid): """ Show message about disconnecting terminal from server and free terminal :param msg: message from terminal about disconnecting :param term_guid: terminal GUID of message sender """ if self.tracking_activity: ui.show_msg(msg) ui.show_msg(ui.SEPARATOR) self.server.set_terminal_engage(term_guid, False)
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)
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
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)
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
def show_add_worker_ui(self): worker_guid = ServerController.read_digit(ui.WORKER_ID_INPUT) worker_name = ServerController.read_literal(ui.WORKER_NAME_INPUT) worker_surname = ServerController.read_literal(ui.WORKER_SURNAME_INPUT) try: self.server.add_worker(worker_name, worker_surname, worker_guid) except DataInputError as err: ui.show_msg(err.message) else: ui.show_msg(ui.ADDED_WORKER)
def show_tracking_activity_menu(self): """ Show console panel in which appeared on runtime current activity logs noticed on server """ self.tracking_activity = True ui.show_msg(ui.TRACKING_ACTIVITY_MENU) ui.show_msg(ui.SEPARATOR) user_input = input() while user_input != "0": user_input = input() self.tracking_activity = False
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)
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)
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 show_data(list_to_show): """ Print every element from given arr, separated with text separator from CLI :param list_to_show: List of elements to show """ ui.show_msg(ui.SEPARATOR) if list_to_show.__len__() > 0: for element in list_to_show: ui.show_msg(element.__str__()) ui.show_msg(ui.SEPARATOR) else: ui.show_msg(ui.EMPTY) ui.show_msg(ui.SEPARATOR)
def show_add_worker_ui(self): """ Show UI for adding new worker. If parameters from user are correct then add new worker to database """ worker_guid = ServerController.read_digit(ui.WORKER_ID_INPUT) worker_name = ServerController.read_literal(ui.WORKER_NAME_INPUT) worker_surname = ServerController.read_literal(ui.WORKER_SURNAME_INPUT) try: self.server.add_worker(worker_name, worker_surname, worker_guid) except DataInputError as err: ui.show_msg(err.message) else: ui.show_msg(ui.ADDED_WORKER)
def process_message(self, client, userdata, message): decoded = (str(message.payload.decode("utf-8"))).split(".") if decoded[0] == TERM_READING_QUERY: self.term_reading_query() elif decoded[0] == TERM_CONNECTING_QUERY: self.term_connecting_query(decoded[0]) elif decoded[0] == TERM_DISCONNECTING_QUERY: self.term_disconnection_query(decoded[0], decoded[1]) elif decoded[0] == TERM_SELECTED_QUERY: self.term_selected_query(decoded[1], decoded[2]) elif decoded[0] == CARD_READING_QUERY: self.card_reading_query(decoded[1], decoded[2]) else: ui.show_msg("Unknown query")
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
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)
def show_worker_with_time_report(tuple_list): """ Show in UI data from generated report :param tuple_list: Data saved in tuples (worked GUID, work time) in list """ ui.show_msg(ui.SEPARATOR) for tup in tuple_list: ui.show_msg("Worker GUID: " + tup[0] + " Work time: " + tup[1].__str__()) ui.show_msg(ui.SEPARATOR)
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)
def show_card_usage_msg(card_guid, card_owner, terminal_id): """ Show information to console about RFID card usage :param card_guid: GUID of RFID card :param card_owner: card owner of type Worker :param terminal_id: used terminal ID """ ui.show_msg(ui.CARD_USAGE_REGISTERED) ui.show_msg("Card GUID= " + card_guid) if card_owner is None: ui.show_msg(ui.UNKNOWN_CARD_OWNER) else: owner_guid = card_owner.worker_guid owner_fullname = card_owner.name + " " + card_owner.surname ui.show_msg(ui.CARD_OWNER_IS_KNOWN + owner_guid + ", " + owner_fullname) ui.show_msg("Terminal ID= " + terminal_id) ui.show_msg(ui.SEPARATOR)
def show_card_usage_msg(card_guid, card_owner, terminal_id): ui.show_msg(ui.CARD_USAGE_REGISTERED) ui.show_msg("Card GUID= " + card_guid) if card_owner is None: ui.show_msg(ui.UNKNOWN_CARD_OWNER) else: owner_guid = card_owner.worker_guid owner_fullname = card_owner.name + " " + card_owner.surname ui.show_msg(ui.CARD_OWNER_IS_KNOWN + owner_guid + ", " + owner_fullname) ui.show_msg("Terminal ID= " + terminal_id) ui.show_msg(ui.SEPARATOR)
def incorrect_option_msg(): """ Show message in CLI, that given menu option in unknown / incorrect """ ui.show_msg(ui.UNKNOWN_OPTION) ui.show_msg(ui.SEPARATOR)