コード例 #1
0
class Close(BasePage):
    def __init__(self, driver: WebDriver):
        """ Close NCR E2E Actions """
        super().__init__(driver)
        self.login_page = LoginPage(self._driver)
        self.home_page = HomePage(self._driver)
        self.close_requests = CloseRequests(self._driver)
        self.create_requests = CreateRequests(self.close_requests._driver)

    def closeRequest(self):
        # Login to the Page
        self.login_page.enter_username_textbox()
        self.login_page.enter_password_textbox()
        self.login_page.click_login_button()
        # Parse all the change number from home page
        all_changes_list = self.home_page.get_all_change_numbers()
        # Parse all the closing change request shared by user
        user_list_for_close = make_data.list_of_change(
            StaticData.CLOSE_CHANGE_TXT_FILE_PATH)
        tasks = len(user_list_for_close)
        ClosePrettify.make_layout()
        ClosePrettify.make_table()
        my_progress = ClosePrettify.progress_bar(tasks)
        ClosePrettify.merge_layout(my_progress, ClosePrettify.get_table())
        print(user_list_for_close)
        # Iterate through each user shared Change Number
        with Live(ClosePrettify.get_layout(),
                  refresh_per_second=5,
                  vertical_overflow="visible") as live:
            for job in my_progress.tasks:
                for _index, a_change in enumerate(user_list_for_close):
                    if a_change in all_changes_list:
                        # get the Index number for the change calculated by algorithm get_index_for_change()
                        index = self.close_requests.get_index_for_change_number(
                            a_change, all_changes_list)
                        if index is not None:
                            # Select the change request shared by user
                            self.close_requests.find_the_change_request(
                                a_change, index)
                            if not self.close_requests.is_change_status_closed(
                            ):
                                # check if Change is opened
                                if not self.close_requests.is_status_scheduled_for_approval(
                                ):
                                    # check if Change is Scheduled for approval
                                    actual_open_time = self.close_requests.get_actual_start_date(
                                    )
                                    if actual_open_time is not None:
                                        # make closing time depending on Actual Open Time
                                        # actual_closing_time = make_data.make_downtime_from_open_time(
                                        # actual_open_time)
                                        # Grab the current sys time
                                        current_sys_time = make_data.get_current_system_time(
                                        )
                                        self.close_requests.goto_task_page()
                                        # Close the 2nd task
                                        self.close_requests.close_service_downtime_duration_task(
                                            actual_open_time)
                                        # Close the 3rd task
                                        self.close_requests.close_service_downtime_window_task(
                                            actual_open_time, current_sys_time)
                                        # Close the 4th task
                                        self.close_requests.close_system_downtime_duration_task(
                                            actual_open_time)
                                        self.create_requests.go_back_to_homepage(
                                        )
                                        ClosePrettify.add_row_table(
                                            str(_index + 1),
                                            self.close_requests.
                                            get_change_number(),
                                            "[green]SUCCESS")
                                        live.update(ClosePrettify.get_layout())
                                    else:
                                        self.close_requests.add_change_to_invalid_list(
                                            a_change)
                                        self.create_requests.go_back_to_homepage(
                                        )
                                        ClosePrettify.add_row_table(
                                            str(_index + 1),
                                            self.close_requests.
                                            get_change_number(),
                                            "[red]NCR NOT OPENED")
                                        live.update(ClosePrettify.get_layout())
                                else:
                                    self.close_requests.add_change_to_invalid_list(
                                        a_change)
                                    self.create_requests.go_back_to_homepage()
                                    ClosePrettify.add_row_table(
                                        str(_index + 1),
                                        self.close_requests.get_change_number(
                                        ), "[red]SFA")

                                    live.update(ClosePrettify.get_layout())
                            else:
                                self.create_requests.go_back_to_homepage()
                                ClosePrettify.add_row_table(
                                    str(_index + 1),
                                    self.close_requests.get_change_number(),
                                    "[red]AC")
                                live.update(ClosePrettify.get_layout())
                        else:
                            self.close_requests.add_change_to_invalid_list(
                                a_change)
                            ClosePrettify.add_row_table(
                                str(_index + 1),
                                self.close_requests.get_change_number(),
                                "[red]INVALID")
                            live.update(ClosePrettify.get_layout())
                    else:
                        self.close_requests.add_change_to_invalid_list(
                            a_change)
                        ClosePrettify.add_row_table(
                            str(_index + 1),
                            self.close_requests.get_change_number(),
                            "[red]INVALID")
                        live.update(ClosePrettify.get_layout())
                if not job.finished:
                    my_progress.advance(job.id)

        self.home_page.click_logout_button()
コード例 #2
0
ファイル: cancel.py プロジェクト: jiaulislam/AutoBotBMCRemedy
class Cancel(BasePage):
    def __init__(self, driver: WebDriver):
        """ Cancel NCR E2E Actions """
        super().__init__(driver)
        self.login_page = LoginPage(self._driver)
        self.home_page = HomePage(self.login_page._driver)
        self.closeRequest = CloseRequests(self.home_page._driver)
        self.cancel_requests = CancelRequests(self.closeRequest._driver)
        self.create_requests = CreateRequests(self.closeRequest._driver)

    def cancelRequest(self):
        """ All the functionalities in one function to mimic a user interactions to cancel a Change Request"""

        # Log in to the server
        self.login_page.enter_username_textbox()
        self.login_page.enter_password_textbox()
        self.login_page.click_login_button()

        # Parse all the change numbers from the home page
        all_changes_web = self.home_page.get_all_change_numbers()

        # Parse all the user requested change number from the source
        all_changes_file = make_data.list_of_change(
            StaticData.CANCEL_CHANGE_TXT_FILE_PATH)

        # Prettify tables
        CancelPrettify.make_layout()
        CancelPrettify.make_table()
        progress = CancelPrettify.progress_bar(len(all_changes_file))
        CancelPrettify.merge_layout(progress, CancelPrettify.get_table())

        with Live(CancelPrettify.show_layout(),
                  refresh_per_second=5,
                  vertical_overflow="visible") as live:
            while not progress.finished:
                for task in progress.tasks:
                    for _task_no, a_change in enumerate(all_changes_file):
                        # find the index of the change number from the list (custom algorithm is used).
                        #  Searching an element time complexity is O(1)
                        index = self.closeRequest.get_index_for_change_number(
                            a_change, all_changes_web)
                        if index is not None:
                            # select the change number after found
                            self.closeRequest.find_the_change_request(
                                a_change, index)
                            if not self.closeRequest.is_change_status_closed():
                                if not self.closeRequest.is_status_scheduled_for_approval(
                                ):
                                    if not self.cancel_requests.is_change_request_opened(
                                    ):
                                        if not self.cancel_requests.is_cancelled(
                                        ):
                                            # Perform the user interactions to cancel
                                            self.cancel_requests.wait_for_loading_icon_disappear(
                                            )
                                            self.cancel_requests.select_cancel(
                                            )
                                            self.cancel_requests.save_status()
                                            # // Cancelled //
                                            CancelPrettify.add_row_table(
                                                str(_task_no + 1),
                                                self.cancel_requests.
                                                get_cancelled_cr_number(),
                                                "CANCELLED")
                                            live.update(
                                                CancelPrettify.show_layout())
                                            self.create_requests.go_back_to_homepage(
                                            )
                                        else:
                                            #  // Already Closed //
                                            CancelPrettify.add_row_table(
                                                str(_task_no + 1),
                                                self.cancel_requests.
                                                get_cancelled_cr_number(),
                                                "A/C",
                                                style="yellow")
                                            live.update(
                                                CancelPrettify.show_layout())
                                            self.create_requests.go_back_to_homepage(
                                            )
                                    else:
                                        # // Already Opened //
                                        CancelPrettify.add_row_table(
                                            str(_task_no + 1),
                                            self.cancel_requests.
                                            get_cancelled_cr_number(),
                                            "A/O",
                                            style="red")
                                        live.update(
                                            CancelPrettify.show_layout())
                                        self.create_requests.go_back_to_homepage(
                                        )
                                else:
                                    # // Scheduled for Approval
                                    CancelPrettify.add_row_table(
                                        str(_task_no + 1),
                                        self.cancel_requests.
                                        get_cancelled_cr_number(), "S/F/A")
                                    live.update(CancelPrettify.show_layout())
                                    self.create_requests.go_back_to_homepage()
                            else:
                                # // Already Closed or Completed
                                CancelPrettify.add_row_table(
                                    str(_task_no + 1),
                                    self.cancel_requests.
                                    get_cancelled_cr_number(),
                                    "Closed/Completed")
                                live.update(CancelPrettify.show_layout())
                                self.create_requests.go_back_to_homepage()
                        if not task.finished:
                            progress.advance(task.id)

        self.home_page.click_logout_button()