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)
示例#4
0
 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)
示例#10
0
 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)
示例#11
0
 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)
示例#12
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)
 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
示例#14
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)
示例#15
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
    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)
示例#17
0
 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
示例#18
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)
示例#19
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)
示例#20
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()
示例#21
0
 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)
示例#22
0
    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")
示例#24
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
 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)
示例#26
0
 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)
示例#27
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)
示例#28
0
 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)
示例#30
0
 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)