def _submit_simple_kb_article()

in playwright_tests/flows/explore_articles_flows/article_flows/add_kb_article_flow.py [0:0]


    def _submit_simple_kb_article(self,
                                  article_title=None,
                                  article_slug=None,
                                  article_category=None,
                                  article_keyword=None,
                                  allow_discussion=True,
                                  allow_translations=True,
                                  selected_product=True,
                                  selected_topics=True,
                                  search_summary=None,
                                  article_content=None,
                                  article_content_image='',
                                  submit_article=True,
                                  is_template=False,
                                  expiry_date=None,
                                  restricted_to_groups: list[str] = None,
                                  single_group="",
                                  approve_first_revision=False,
                                  ready_for_localization=False
                                  ) -> dict[str, Any]:
        self.utilities.navigate_to_link(KBArticlePageMessages.CREATE_NEW_KB_ARTICLE_STAGE_URL)

        kb_article_test_data = self.utilities.kb_article_test_data

        if restricted_to_groups is not None:
            for group in restricted_to_groups:
                self.submit_kb_article_page.add_and_select_restrict_visibility_group(group)
        if single_group != "":
            self.submit_kb_article_page.add_and_select_restrict_visibility_group(single_group)

        if article_title is None:
            if is_template:
                kb_article_title = (kb_article_test_data["kb_template_title"] + self.utilities.
                                    generate_random_number(0, 5000))
            else:
                kb_article_title = (kb_article_test_data["kb_article_title"] + self.utilities.
                                    generate_random_number(0, 5000))
        else:
            kb_article_title = article_title

        if kb_article_title != "":
            self.submit_kb_article_page.add_text_to_article_form_title_field(
                kb_article_title
            )

        if (article_slug is not None) and (article_slug != ""):
            kb_article_slug = article_slug
            self.submit_kb_article_page.add_text_to_article_slug_field(kb_article_slug)

        if article_category is None:
            if is_template:
                article_category = kb_article_test_data["kb_template_category"]
                self.submit_kb_article_page.select_category_option_by_text(
                    article_category
                )
            else:
                article_category = kb_article_test_data["category_options"]
                self.submit_kb_article_page.select_category_option_by_text(article_category)
        else:
            self.submit_kb_article_page.select_category_option_by_text(article_category)

        if not allow_translations:
            self.submit_kb_article_page.check_allow_translations_checkbox()

        product = kb_article_test_data["relevant_to_product"]
        if selected_product is True:
            self.submit_kb_article_page.click_on_a_particular_product(product)

        article_topic = [
            kb_article_test_data["selected_parent_topic"],
            kb_article_test_data["selected_child_topic"]
        ]

        # Adding Article topic
        if selected_topics is True:
            self.submit_kb_article_page.click_on_a_particular_parent_topic_checkbox(
                article_topic[0]
            )
            self.submit_kb_article_page.click_on_a_particular_child_topic_checkbox(
                article_topic[0],
                article_topic[1],
            )

        # Interacting with Allow Discussion checkbox
        if (allow_discussion is True) and (
            self.submit_kb_article_page
                .is_allow_discussion_on_article_checkbox_checked() is False):
            self.submit_kb_article_page.check_allow_discussion_on_article_checkbox()
        elif (allow_discussion is False) and (
            self.submit_kb_article_page
                .is_allow_discussion_on_article_checkbox_checked() is True):
            self.submit_kb_article_page.check_allow_discussion_on_article_checkbox()

        self.submit_kb_article_page.add_text_to_related_documents_field(
            kb_article_test_data["related_documents"])

        keyword = None
        if article_keyword is None:
            self.submit_kb_article_page.add_text_to_keywords_field(
                kb_article_test_data["keywords"])
            keyword = kb_article_test_data["keywords"]
        else:
            self.submit_kb_article_page.add_text_to_keywords_field(article_keyword)
            keyword = article_keyword

        summary = None
        if search_summary is None:
            self.submit_kb_article_page.add_text_to_search_result_summary_field(
                kb_article_test_data["search_result_summary"]
            )
            summary = kb_article_test_data["search_result_summary"]
        else:
            self.submit_kb_article_page.add_text_to_search_result_summary_field(
                search_summary
            )
            summary = search_summary

        if not self.submit_kb_article_page.is_content_textarea_displayed():
            self.submit_kb_article_page.click_on_toggle_syntax_highlight_option()

        if article_content is None:
            self.submit_kb_article_page.add_text_to_content_textarea(
                kb_article_test_data["article_content"])
        else:
            self.submit_kb_article_page.add_text_to_content_textarea(article_content)

        if article_content_image != '':
            self.submit_kb_article_page.click_on_insert_media_button()
            self.add_media_flow.add_media_to_kb_article(
                file_type="Image",
                file_name=article_content_image
            )

        if expiry_date is not None:
            self.submit_kb_article_page.add_text_to_expiry_date_field(expiry_date)

        # We need to evaluate in order to fetch the slug field value
        slug = self.page.evaluate(
            'document.getElementById("id_slug").value'
        )

        first_revision_id = None
        if submit_article is True:
            # If title and slug are empty we are not reaching the description field.
            if ((article_title != '') and (article_slug != '') and (
                    search_summary != "") and (article_content != "")):
                self.submit_kb_article_page.click_on_submit_for_review_button()
                self.submit_kb_article_page.add_text_to_changes_description_field(
                    kb_article_test_data["changes_description"]
                )
                self.submit_kb_article_page.click_on_changes_submit_button()
                try:
                    first_revision_id = self.kb_article_show_history_page.get_last_revision_id()
                except IndexError:
                    print("Chances are that the form was not submitted successfully")
            else:
                self.submit_kb_article_page.click_on_submit_for_review_button()

        article_url = self.submit_kb_article_page.get_article_page_url()

        if approve_first_revision:
            self.kb_article_page.click_on_show_history_option()
            if ready_for_localization:
                self.approve_kb_revision(revision_id=first_revision_id, ready_for_l10n=True)
            else:
                self.approve_kb_revision(revision_id=first_revision_id)

        return {"article_title": kb_article_title,
                "article_content": kb_article_test_data["article_content"],
                "article_content_html": kb_article_test_data['article_content_html_rendered'],
                "article_slug": slug,
                "article_child_topic": kb_article_test_data["selected_child_topic"],
                "article_category": article_category,
                "article_product": product,
                "article_topic": article_topic,
                "article_review_description": kb_article_test_data["changes_description"],
                "keyword": keyword,
                "search_results_summary": summary,
                "expiry_date": kb_article_test_data["expiry_date"],
                "article_url": article_url,
                "first_revision_id": first_revision_id
                }