def _edit_article_metadata()

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


    def _edit_article_metadata(self, title=None,
                               slug=None,
                               category=None,
                               product=None,
                               topics=None,
                               obsolete=False,
                               discussions=True,
                               needs_change=False,
                               needs_change_comment=False,
                               restricted_to_groups: list[str] = None,
                               single_group=""):

        if KBArticleRevision.KB_EDIT_METADATA not in self.utilities.get_page_url():
            self.kb_article_page.click_on_edit_article_metadata()

        if restricted_to_groups:
            for group in restricted_to_groups:
                (self.kb_article_edit_metadata_page
                 .add_and_select_restrict_visibility_group_metadata(group))
        if single_group != "":
            self.kb_article_edit_metadata_page.add_and_select_restrict_visibility_group_metadata(
                single_group)

        if title:
            self.kb_article_edit_metadata_page.add_text_to_title_field(title)

        if slug:
            self.kb_article_edit_metadata_page.add_text_to_slug_field(slug)

        if category:
            self.kb_article_edit_metadata_page.select_category(category)

        if product:
            self.kb_article_edit_metadata_page.check_product_checkbox(product)

        if topics:
            if isinstance(topics, list):
                self.submit_kb_article_page.click_on_a_particular_child_topic_checkbox(
                    topics[0],
                    topics[1],
                )
            else:
                self.submit_kb_article_page.click_on_a_particular_parent_topic_checkbox(
                    topics
                )

        if obsolete:
            if not self.kb_article_edit_metadata_page.is_obsolete_checkbox_checked():
                self.kb_article_edit_metadata_page.click_on_obsolete_checkbox()
        else:
            if self.kb_article_edit_metadata_page.is_obsolete_checkbox_checked():
                self.kb_article_edit_metadata_page.click_on_obsolete_checkbox()

        if discussions:
            if not self.kb_article_edit_metadata_page.is_allow_discussion_checkbox_checked():
                self.kb_article_edit_metadata_page.click_on_allow_discussion_on_article_checkbox()
        else:
            if self.kb_article_edit_metadata_page.is_allow_discussion_checkbox_checked():
                self.kb_article_edit_metadata_page.click_on_allow_discussion_on_article_checkbox()

        # If it needs change we are going to ensure that the needs change checkbox is checked.
        if needs_change:
            if not self.kb_article_edit_metadata_page.is_needs_change_checkbox():
                self.kb_article_edit_metadata_page.click_needs_change_checkbox()
                # If it needs change with comment we are also adding the comment.
            if needs_change_comment:
                self.kb_article_edit_metadata_page.fill_needs_change_textarea(
                    self.utilities.kb_revision_test_data['needs_change_message']
                )
            # If it doesn't need comment we are ensuring that the textarea field is empty.
            else:
                self.kb_article_edit_metadata_page.fill_needs_change_textarea('')

        # If it doesn't need change we are ensuring that the checkbox is not checked.
        else:
            if self.kb_article_edit_metadata_page.is_needs_change_checkbox():
                self.kb_article_edit_metadata_page.click_needs_change_checkbox()

        self.kb_article_edit_metadata_page.click_on_save_changes_button()