def display(self, item_list, page, max_page, list_filter, buttons, time):
        Render.clear()
        Render.header(self.header)
        filter_info_list = []
        for filt in self.filters:
            if filt == list_filter:             
                filter_info_list += ["# "+filt.upper()+" #"]
            else:
                filter_info_list += [filt]
        Render.tool_bar(filter_info_list)

        item_info_list = []
        if list_filter == "working":
            self.list_header = Employee.get_working_header()
            for item in item_list:
                item_info_list += [LL_API.get_working_list_info(item, time).split("#")]
        else:
            self.list_header = Employee.get_header()
            for item in item_list:
                item_info_list += [LL_API.get_list_info(item).split("#")]

        Render.display_list(self.list_header, item_info_list)
        Render.page_bar(page, max_page)
        Render.tool_bar(buttons)
        Render.the_border()
Exemple #2
0
    def run(self):
        page = 1
        max_page = None
        search = None
        time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        item_list = []
        list_filter = "all"
        buttons = [] + BUTTONS + ["|F| Filter"] + ["|C| Clear Filters"]
        while True:
            if self.filters == None:
                number_of_items = self.get_number_of_items_func(search)
                item_list = self.get_item_list_func(search, page,
                                                    ITEMS_PER_PAGE)
            else:
                number_of_items = self.get_number_of_items_func(
                    search, list_filter)
                item_list = self.get_item_list_func(search, page,
                                                    ITEMS_PER_PAGE,
                                                    list_filter)

            max_page = math.ceil(number_of_items / ITEMS_PER_PAGE)
            if number_of_items == 0:
                max_page = 1

            self.display(item_list, page, max_page, list_filter, buttons, time)
            user_input = self.get_input()

            if user_input.lower() == "c":
                time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                LL_API.set_filter_time(time)

            if user_input.lower() == "b":
                return 0
            elif user_input.lower() == "f":
                time = Select_Time_Window.run(True, "minute")
                if time is None:
                    time = datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")
                LL_API.set_filter_time(str(time))

            elif user_input.lower() == "n":
                if page < max_page:
                    page += 1
            elif user_input.lower() == "p":
                if page > 1:
                    page -= 1
            elif user_input.lower() == "s":
                search = input("Search keyword: ")
                page = 1
            elif user_input.lower() == "a":
                self.add_window.run()
            elif user_input.isdigit():
                if 1 <= int(user_input) <= len(item_list):
                    item = item_list[int(user_input) - 1]
                    self.info_window.run(item)
 def display(self, item, buttons):
     Render.clear()
     Render.header(self.header)
     item_info = LL_API.get_info(item)
     Render.indent_info_window(item_info)
     Render.tool_bar(buttons)
     Render.the_border()
Exemple #4
0
 def display(self, item):
     Render.clear()
     Render.header(self.header)
     item_info = LL_API.get_info(item)
     Render.the_info_window(item_info)
     if self.edit_window != None:
         Render.tool_bar(BUTTONS)
     Render.the_border()
Exemple #5
0
 def display(self, item_page, page, max_page):
     Render.clear()
     Render.header(self.header)
     item_info_list = []
     for item in item_page:
         item_info_list += [LL_API.get_list_info(item).split("#")]
     Render.display_list(self.list_header, item_info_list)
     Render.page_bar(page, max_page)
     Render.tool_bar(BUTTONS)
     Render.the_border()
Exemple #6
0
    def display(self, item_list, page, max_page, list_filter, buttons, time):
        Render.clear()
        Render.header(self.header)
        Render.tool_bar(["Showing aircrafts for time:  " + str(time)])

        item_info_list = []
        for item in item_list:
            item_info_list += [LL_API.get_list_info(item).split("#")]
        Render.display_list(self.list_header, item_info_list)
        Render.page_bar(page, max_page)
        Render.tool_bar(buttons)
        Render.the_border()
    def run(self, item):
        while True:
            self.display(item)
            user_input = self.get_input()
            if user_input.lower() == "b":
                return 0
            elif user_input.lower() == "e" and (self.edit_window != None):
                self.edit_window.run(item)

            elif user_input.lower() == "w":
                time = Select_Time_Window.run(True, "day")
                if time is not None:
                    work_week = LL_API.get_work_week(item, time)
                    ww_window = Work_Week_List("Work Week: {} for {}".format(str(time).split()[0], item.get_name()), ["Day", "Work Destination"])
                    ww_window.run(work_week)
    def run(self, item):
        edited_info = LL_API.get_edit_info(item)
        # Edit index must start on allowed index
        edit_index = 0
        while edited_info[edit_index][INDEX_OF_EDIT_PERMISSION_BOOL] == False:
            edit_index += 1
            if edit_index > len(edited_info) - 1:
                edit_index = 0

        while True:
            self.display(edited_info, edit_index, BUTTONS)
            user_input = self.get_input()

            if user_input.lower() == "b":
                return 0
            elif user_input.lower() == "c":
                new_info = []
                for info in edited_info:
                    new_info += [info[INDEX_OF_INFO]]
                item.set_info(new_info)
                self.change_item_func(item.get_id(), new_info)
                return 0

            elif user_input.lower() == "u":
                edit_index -= 1
                if edit_index < 0:
                    edit_index = len(edited_info) - 1
                while edited_info[edit_index][
                        INDEX_OF_EDIT_PERMISSION_BOOL] == False:
                    edit_index -= 1
                    if edit_index < 0:
                        edit_index = len(edited_info) - 1

            elif user_input.lower() == "d":
                edit_index += 1
                if edit_index > len(edited_info) - 1:
                    edit_index = 0
                while edited_info[edit_index][
                        INDEX_OF_EDIT_PERMISSION_BOOL] == False:
                    edit_index += 1
                    if edit_index > len(edited_info) - 1:
                        edit_index = 0

            else:
                edited_info[edit_index][INDEX_OF_INFO] = user_input
Exemple #9
0
    def display(self, item_list, page, max_page, list_filter, buttons):
        Render.clear()
        Render.header(self.header)
        if self.filters != None:
            filter_info_list = []
            for filt in self.filters:
                if filt == list_filter:
                    filter_info_list += ["# " + filt.upper() + " #"]
                else:
                    filter_info_list += [filt]
            Render.tool_bar(filter_info_list)

        item_info_list = []
        for item in item_list:
            item_info_list += [LL_API.get_list_info(item).split("#")]
        Render.display_list(self.list_header, item_info_list)
        Render.page_bar(page, max_page)
        Render.tool_bar(buttons)
        Render.the_border()
Exemple #10
0
    def run(self):
        new_item_info = [None, "+"]
        edit_index = 0

        while True:
            self.display(new_item_info, edit_index, BUTTONS)
            user_input = self.get_input()
            if user_input == "":
                if edit_index == DESTINATION_INDEX:
                    all_available_destinations = LL_API.get_available_destinations(
                    )
                    new_destination = self.destination_select_window.run(
                        all_available_destinations)
                    if new_destination is not None:
                        new_item_info[DESTINATION_INDEX] = new_destination
                        edit_index += 1
                elif edit_index == DEPARTURE_TIME_INDEX:
                    time = Select_Time_Window.run(True, "minute")
                    if time is not None:
                        new_item_info[DEPARTURE_TIME_INDEX] = time
            elif user_input.lower() == "b":
                return 0
            elif user_input.lower() == "c":
                self.store_item_func(new_item_info)
                return 0
            elif user_input.lower() == "d":
                if edit_index != len(self.info_names) - 1:
                    edit_index += 1
                else:
                    edit_index = 0
            elif user_input.lower() == "u":
                if edit_index != 0:
                    edit_index -= 1
                else:
                    edit_index = len(self.info_names) - 1
            else:
                if edit_index == DEPARTURE_TIME_INDEX:
                    new_item_info[DEPARTURE_TIME_INDEX] = user_input
                    if edit_index != len(self.info_names) - 1:
                        edit_index += 1
                    else:
                        edit_index = 0
Exemple #11
0
    def run(self, item_list):
        search = ""
        page = 1
        max_page = 1
        item_page = []
        while True:
            # Update item_page
            item_page = []
            for item in item_list[0]:
                if search.lower() in LL_API.get_list_info(item).lower():
                    item_page += [item]

            if len(item_page) == 0:
                max_page = 1
            max_page = math.ceil(len(item_page) / OBJECTS_PER_PAGE)

            item_page = item_page[(page - 1) * OBJECTS_PER_PAGE:page *
                                  OBJECTS_PER_PAGE]

            # Display and get input
            self.display(item_page, page, max_page)
            user_input = self.get_input()

            if user_input == "b":
                return None
            elif user_input.lower() == "n":
                if page < max_page:
                    page += 1
            elif user_input.lower() == "p":
                if page > 1:
                    page -= 1
            elif user_input.lower() == "s":
                search = input("Search keyword: ")
                page = 0
            elif user_input.isdigit():
                if 1 <= int(user_input) <= len(item_page):
                    return item_page[1][int(user_input) - 1]
Exemple #12
0
    def run(self):
        page = 1
        max_page = None
        search = None
        item_list = []
        list_filter = "all"
        time_filter = None

        if self.filters is None:
            buttons = [] + BUTTONS
        else:
            buttons = [] + BUTTONS + ["|F| Filter"]
        while True:
            number_of_items = LL_API.get_number_of_voyage_page_time(
                search, list_filter, time_filter)
            item_list = LL_API.get_voyage_page_time(search, page,
                                                    ITEMS_PER_PAGE,
                                                    list_filter, time_filter)

            max_page = math.ceil(number_of_items / ITEMS_PER_PAGE)
            if number_of_items == 0:
                max_page = 1
            self.display(item_list, page, max_page, list_filter, buttons)
            user_input = self.get_input()

            if user_input.lower() == "b":
                return 0
            elif user_input.lower() == "f":
                filter_buttons = []
                for filt in self.filters:
                    filter_buttons += [
                        "|{}| {}".format(filt[0].upper(),
                                         filt[0].upper() + filt[1:])
                    ]
                self.display(item_list, page, max_page, list_filter,
                             filter_buttons)
                user_input = self.get_input()
                for filt in self.filters:
                    if user_input.lower() == filt[0]:
                        list_filter = filt
                        page = 1
                if user_input.lower() == "b":
                    return 0
            elif user_input.lower() == "n":
                if page < max_page:
                    page += 1
            elif user_input.lower() == "p":
                if page > 1:
                    page -= 1
            elif user_input.lower() == "s":
                search = input("Search keyword: ")
                page = 1
            elif user_input.lower() == "a":
                self.add_window.run()
            elif user_input.lower() == "t":
                time = Select_Time_Window.run(True, "day")
                if time is not None:
                    delta_time = input(
                        "Enter how many days you want to check from previous entered date: "
                    )
                    if delta_time.isdigit():
                        time_filter = time, time + datetime.timedelta(
                            int(delta_time))

            elif user_input.isdigit():
                if 1 <= int(user_input) <= len(item_list):
                    item = item_list[int(user_input) - 1]
                    self.info_window.run(item)
 def get_object_page(self, object_id, search, page, objects_per_page):
     return LL_API.get_object_page(object_id, search, page,
                                   objects_per_page)
    def run(self):
        page = 1
        max_page = None
        search = None
        time = None
        item_list = []
        list_filter = "all"

        while True:
            number_of_items = LL_API.get_number_of_employees(search, list_filter, time)
            item_list = LL_API.get_employee_page(search, page, ITEMS_PER_PAGE, list_filter, time)


            max_page = math.ceil(number_of_items / ITEMS_PER_PAGE)
            if number_of_items == 0:
                max_page = 1
            self.display(item_list, page, max_page, list_filter, BUTTONS, time)
            user_input = self.get_input()

            if user_input.lower() == "b":
                return 0

            elif user_input.lower() == "f":
                filter_buttons = ["|A| all", "|P| pilots", "|C| cabin crew", "|W| working", "|N| not working"]
                self.display(item_list, page, max_page, list_filter, filter_buttons, time)
                user_input = self.get_input()

                if user_input.lower() == "w":
                    time = Select_Time_Window.run(True, detail="day")
                    if time is not None:
                        filter_time = time
                        list_filter = "working"

                elif user_input.lower() == "n":
                    time = Select_Time_Window.run(True, detail="day")
                    if time is not None:
                        filter_time = time
                        list_filter = "not_working"

                elif user_input.lower() == "a":
                    list_filter = "all"
                    page = 1

                elif user_input.lower() == "p":
                    list_filter = "pilot"
                    page = 1

                elif user_input.lower() == "c":
                    list_filter = "cabin_crew"
                    page = 1


            elif user_input.lower() == "n":
                if page < max_page:
                    page += 1
            elif user_input.lower() == "p":
                if page > 1:
                    page -= 1
            elif user_input.lower() == "s":
                search = input("Search keyword: ")
                page = 1
            elif user_input.lower() == "a":
                self.add_window.run()
            elif user_input.isdigit():
                if 1 <= int(user_input) <= len(item_list):
                    item = item_list[int(user_input) - 1]
                    self.info_window.run(item)
Exemple #15
0
 def store_item_func(self, item_info):
     LL_API.store_new_voyage(item_info[DESTINATION_INDEX].get_id(),
                             item_info[DEPARTURE_TIME_INDEX])
Exemple #16
0
    def run(self, voyage):
        edit_index = 0
        #[aircraft, captain, [copilots], flight_service_manager, [flight_attendant]]
        edit_info = LL_API.get_edit_info(voyage)
        aircraft = edit_info[AIRCRAFT_INDEX]
        captain = edit_info[CAPTAIN_INDEX]
        copilot_list = edit_info[COPILOT_LIST_INDEX] + [None]
        flight_service_manager = edit_info[FLIGHT_SERVICE_MANAGER_INDEX]
        flight_attendant_list = edit_info[FLIGHT_ATTENDANT_LIST_INDEX] + [None]

        original_crew_list_with_none = [captain] + copilot_list + [flight_service_manager] + flight_attendant_list
        original_crew_list = []
        for employee in original_crew_list_with_none:
            if employee is not None:
                original_crew_list += [employee]

        original_aircraft_list = []
        if aircraft is not None:
            original_aircraft_list = [aircraft]

        available_employees = LL_API.get_available_employees(voyage.get_departure_time()) + original_crew_list
        available_aircraft = LL_API.get_available_aircraft(voyage.get_departure_time()) + original_aircraft_list
        for employee in available_employees:
            if employee.get_job() == "pilot":
                print(employee.get_licence())
            else:
                print()

        while True:
            edit_info = [aircraft, captain, copilot_list, flight_service_manager, flight_attendant_list]
            self.display(edit_info, edit_index, BUTTONS)
            user_input = self.get_input()
            item_selected, item_type_str = Voyage_Edit_Window.__get_edit_info_item_and_type(edit_info, edit_index)

            size_of_list = 3 + len(edit_info[COPILOT_LIST_INDEX]) + len(edit_info[FLIGHT_ATTENDANT_LIST_INDEX])
            # back is pressed
            if user_input.lower() == "b":
                return 0

            # if down is pressed
            elif user_input.lower() == "d":
                # amount of items - 1
                if edit_index == size_of_list - 1:
                    # arrow wrapping
                    edit_index = 0
                else:
                    edit_index += 1

            # if upp is pressed
            elif user_input.lower() == "u":
                if edit_index == 0:
                    edit_index = size_of_list - 1
                else:
                    edit_index -= 1

            elif user_input.lower() == "r":
                if item_type_str == "aircraft":
                    aircraft = None
                    captain = None
                    copilot_list = [None]
                    flight_service_manager = None
                    flight_attendant_list = [None]

                elif item_type_str == "captain":
                    captain = None

                elif item_type_str == "copilot":
                    edit_info.remove(item_selected)

                elif item_type_str == "flight_service_manager":
                    flight_service_manager = None

                elif item_type_str == "flight_attendant":
                    edit_info.remove(item_selected)

            elif user_input.lower() == "":
                if item_selected is None:
                    if item_type_str == "aircraft":
                        new_aircraft = self.select_aircraft_window.run(available_aircraft)
                        if new_aircraft is not None:
                            aircraft = new_aircraft

                    elif aircraft is not None:
                        if item_type_str == "captain":
                            available_captains = Voyage_Edit_Window.__filter_employees_by_rank(available_employees, "captain")
                            available_captains = Voyage_Edit_Window.__filter_pilots_by_licence(available_captains, aircraft)
                            new_captain = self.select_captain_window.run(available_captains)
                            if new_captain is not None:
                                captain = new_captain

                        elif item_type_str == "copilot":
                            available_copilots = Voyage_Edit_Window.__filter_employees_by_rank(available_employees, "copilot")
                            available_copilots = Voyage_Edit_Window.__filter_pilots_by_licence(available_copilots, aircraft)
                            available_copilots = list(set(available_copilots) - set(copilot_list))
                            new_copilot = self.select_copilot_window.run(available_copilots)
                            if new_copilot is not None:
                                copilot_list[-1] = new_copilot
                                copilot_list += [None]

                        elif item_type_str == "flight_service_manager":
                            available_flight_service_managers = Voyage_Edit_Window.__filter_employees_by_rank(available_employees, "flight_service_manager")
                            new_flight_service_manager = self.select_flight_service_manager_window.run(available_flight_service_managers)
                            if new_flight_service_manager is not None:
                                flight_service_manager = new_flight_service_manager

                        elif item_type_str == "flight_attendant":
                            available_flight_attendants = Voyage_Edit_Window.__filter_employees_by_rank(available_employees, "flight_attendant")
                            available_flight_attendants = list(set(available_flight_attendants) - set(flight_attendant_list))
                            new_flight_attendant = self.select_flight_attendant_window.run(available_flight_attendants)
                            if new_flight_attendant is not None:
                                flight_attendant_list[-1] = new_flight_attendant
                                flight_attendant_list += [None]
                else:
                    Error_Window.run("select + to add new item to voyage")

            # if user confirms voyage
            elif user_input.lower() == "c":
                employees =   [edit_info[CAPTAIN_INDEX]]\
                            + edit_info[COPILOT_LIST_INDEX]\
                            + [edit_info[FLIGHT_SERVICE_MANAGER_INDEX]]\
                            + edit_info[FLIGHT_ATTENDANT_LIST_INDEX]
                employee_ids = []

                voyage.manned_bool = False
                if edit_info[CAPTAIN_INDEX] is not None:
                    if len(edit_info[COPILOT_LIST_INDEX]) > 1:
                        if edit_info[FLIGHT_SERVICE_MANAGER_INDEX]:
                            voyage.manned_bool = True

                for employee in employees:
                    if employee is not None:
                        employee_ids += [employee.get_id()]
                voyage_info = [
                    edit_info[AIRCRAFT_INDEX].get_id(),
                    voyage.get_destination_id(),
                    voyage.get_departure_time(),
                    voyage.flight1_number,
                    voyage.flight2_number,
                    employee_ids,
                    voyage.manned_bool,
                    voyage.id_int
                ]
                LL_API.change_voyage(voyage.get_id(), voyage_info)
                voyage.set_info(voyage_info)
                return 0
    def run(self, item):
        edit_info = LL_API.get_edit_info(item)
        # Edit index must start on allowed index
        edit_index = 0
        while edit_info[edit_index][INDEX_OF_EDIT_PERMISSION_BOOL] == False:
            edit_index += 1
            if edit_index > len(edit_info) - 1:
                edit_index = 0

        while True:
            self.display(edit_info, edit_index, BUTTONS)
            user_input = self.get_input()

            # User goes back
            if user_input.lower() == "b":
                return 0
            # User moves arrow up
            elif user_input.lower() == "u":
                edit_index -= 1
                if edit_index < 0:
                    edit_index = len(edit_info) - 1
                while edit_info[edit_index][INDEX_OF_EDIT_PERMISSION_BOOL] == False:
                    edit_index -= 1
                    if edit_index < 0:
                        edit_index = len(edit_info) - 1
            # User moves arrow down
            elif user_input.lower() == "d":
                edit_index += 1
                if edit_index > len(edit_info) - 1:
                    edit_index = 0
                while edit_info[edit_index][INDEX_OF_EDIT_PERMISSION_BOOL] == False:
                    edit_index += 1
                    if edit_index > len(edit_info) - 1:
                        edit_index = 0
            # User removes info
            elif user_input.lower() == "r":
                if edit_index == JOB_INDEX:
                    edit_info[JOB_INDEX][INDEX_OF_INFO] = "+"
                    edit_info[RANK_INDEX][INDEX_OF_INFO] = "+"
                elif edit_index == RANK_INDEX:
                    edit_info[RANK_INDEX][INDEX_OF_INFO] = "+"
            # User goes to a select window
            elif user_input == "":
                if edit_index == JOB_INDEX:
                    jobs = Employee.get_job_types()
                    job = self.select_job_window.run(jobs)
                    edit_info[RANK_INDEX][INDEX_OF_INFO] = "+"
                    if job == "pilot":
                        licences = Aircraft.get_model_types()
                        licence = self.select_licence_window.run(licences)
                        job = job + ":" + licence
                        edit_info[edit_index][INDEX_OF_INFO] = job
                    elif job == "cabin_crew":
                        edit_info[edit_index][INDEX_OF_INFO] = job
                elif edit_index == RANK_INDEX:
                    if edit_info[JOB_INDEX][INDEX_OF_INFO] != "+":
                        ranks = Employee.get_rank_types(edit_info[JOB_INDEX][INDEX_OF_INFO])
                        rank = self.select_rank_window.run(ranks)
                        edit_info[edit_index][INDEX_OF_INFO] = rank
                    else:
                        Error_Window.run("you need to select a job before you select rank")
                    

            # User confirms changes
            elif user_input == "c":
                new_info = []
                for info in edit_info:
                    new_info += [info[INDEX_OF_INFO]]
                item.set_info(new_info)
                self.change_item_func(item.get_id(), new_info)
                return 0
            # User inputs info
            else:
                if edit_index != JOB_INDEX and edit_index != RANK_INDEX:
                    if check_employee_input(user_input, edit_index):

                        edit_info[edit_index][INDEX_OF_INFO] = user_input
                    else:
                        Error_Window.run("Invalid information")
 def get_number_of_objects(self, object_id, search):
     return LL_API.get_number_of_objects(object_id, search)