Exemplo n.º 1
0
    def test_wizard_duplicate_slug(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool

        from djangocms_blog.models import Post

        self.get_pages()
        cat_2 = BlogCategory.objects.create(name="category 1 - blog 2",
                                            app_config=self.app_config_2)

        with current_user(self.user_staff):
            wiz = None
            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == "New Blog":
                    break
            form = wiz.form(
                data=self.get_querydict({
                    "1-title": "title article",
                    "1-abstract": "abstract article",
                    "1-categories": self.category_1.pk
                }),
                prefix=1,
            )
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance1 = form.save()
            self.assertEqual(instance1.slug, "title-article")

            form = wiz.form(
                data=self.get_querydict({
                    "1-title": "title article",
                    "1-abstract": "abstract article",
                    "1-categories": self.category_1.pk
                }),
                prefix=1,
            )
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance2 = form.save()
            self.assertEqual(instance2.slug, "title-article-1")

            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == "New Article":
                    break
            form = wiz.form(
                data=self.get_querydict({
                    "1-title": "title article",
                    "1-abstract": "abstract article",
                    "1-categories": cat_2.pk
                }),
                prefix=1,
            )
            self.assertEqual(form.default_appconfig, self.app_config_2.pk)
            self.assertTrue(form.is_valid())
            instance3 = form.save()
            self.assertEqual(instance3.slug, "title-article-2")
Exemplo n.º 2
0
    def test_wizard_init(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()

        cat_1 = BlogCategory.objects.create(name='category 1 - blog 1',
                                            app_config=self.app_config_1)
        cat_2 = BlogCategory.objects.create(name='category 1 - blog 2',
                                            app_config=self.app_config_2)
        cats = {
            self.app_config_1.pk: cat_1,
            self.app_config_2.pk: cat_2,
        }
        with current_user(self.user_staff):
            wizs = [
                entry for entry in wizard_pool.get_entries()
                if entry.model == Post
            ]
            for index, wiz in enumerate(wizs):
                app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                form = wiz.form()
                self.assertTrue(form.initial.get('app_config', False),
                                app_config)
                self.assertTrue(
                    form.fields['app_config'].widget.attrs['disabled'])

                form = wiz.form(data={
                    '1-title': 'title{0}'.format(index),
                    '1-abstract': 'abstract{0}'.format(index),
                    '1-categories': [cats[app_config].pk],
                },
                                prefix=1)
                self.assertEqual(form.default_appconfig, app_config)
                self.assertTrue(form.is_valid())
                self.assertEqual(form.cleaned_data['app_config'].pk,
                                 app_config)
                instance = form.save()
                self.assertEqual(instance.author, self.user_staff)

            with self.settings(BLOG_AUTHOR_DEFAULT='normal'):
                for index, wiz in enumerate(wizs):
                    app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                    form = wiz.form(data={
                        '1-title': 'title-2{0}'.format(index),
                        '1-abstract': 'abstract-2{0}'.format(index),
                        '1-categories': [cats[app_config].pk],
                    },
                                    prefix=1)
                    self.assertEqual(form.default_appconfig, app_config)
                    self.assertTrue(form.is_valid())
                    self.assertEqual(form.cleaned_data['app_config'].pk,
                                     app_config)
                    instance = form.save()
                    self.assertEqual(instance.author, self.user_normal)
Exemplo n.º 3
0
    def test_wizard_init(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post

        self.get_pages()

        cat_1 = BlogCategory.objects.create(name="category 1 - blog 1", app_config=self.app_config_1)
        cat_2 = BlogCategory.objects.create(name="category 1 - blog 2", app_config=self.app_config_2)
        cats = {
            self.app_config_1.pk: cat_1,
            self.app_config_2.pk: cat_2,
        }
        with current_user(self.user_staff):
            wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
            for index, wiz in enumerate(wizs):
                app_config = self.app_config_1.pk if wiz.title == "New Blog" else self.app_config_2.pk
                form = wiz.form()
                self.assertTrue(form.initial.get("app_config", False), app_config)
                self.assertTrue(form.fields["app_config"].widget.attrs["disabled"])

                form = wiz.form(
                    data=self.get_querydict(
                        {
                            "1-title": "title{}".format(index),
                            "1-abstract": "abstract{}".format(index),
                            "1-categories": cats[app_config].pk,
                        }
                    ),
                    prefix=1,
                )
                self.assertEqual(form.default_appconfig, app_config)
                self.assertTrue(form.is_valid())
                self.assertEqual(form.cleaned_data["app_config"].pk, app_config)
                instance = form.save()
                self.assertEqual(instance.author, self.user_staff)

            with self.settings(BLOG_AUTHOR_DEFAULT="normal"):
                for index, wiz in enumerate(wizs):
                    app_config = self.app_config_1.pk if wiz.title == "New Blog" else self.app_config_2.pk
                    form = wiz.form(
                        data=self.get_querydict(
                            {
                                "1-title": "title-2{}".format(index),
                                "1-abstract": "abstract-2{}".format(index),
                                "1-categories": cats[app_config].pk,
                            }
                        ),
                        prefix=1,
                    )
                    self.assertEqual(form.default_appconfig, app_config)
                    self.assertTrue(form.is_valid())
                    self.assertEqual(form.cleaned_data["app_config"].pk, app_config)
                    instance = form.save()
                    self.assertEqual(instance.author, self.user_normal)
Exemplo n.º 4
0
    def test_wizard_duplicate_slug(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()
        cat_2 = BlogCategory.objects.create(name='category 1 - blog 2',
                                            app_config=self.app_config_2)

        with current_user(self.user_staff):
            wiz = None
            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Blog':
                    break
            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [self.category_1.pk],
            },
                            prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance1 = form.save()
            self.assertEqual(instance1.slug, 'title-article')

            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [self.category_1.pk],
            },
                            prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance2 = form.save()
            self.assertEqual(instance2.slug, 'title-article-1')

            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Article':
                    break
            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [cat_2.pk],
            },
                            prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_2.pk)
            self.assertTrue(form.is_valid())
            instance3 = form.save()
            self.assertEqual(instance3.slug, 'title-article-2')
Exemplo n.º 5
0
def publish_page(page, user, language):
    """
    Publish a page. This sets `page.published` to `True` and calls publish()
    which does the actual publishing.

    See docs/extending_cms/api_reference.rst for more info
    """
    page = page.reload()

    if not page.has_publish_permission(user):
        raise PermissionDenied()
    # Set the current_user to have the page's changed_by
    # attribute set correctly.
    # 'user' is a user object, but current_user() just wants the username (a string).
    with current_user(user.get_username()):
        page.publish(language)
    return page.reload()
Exemplo n.º 6
0
def publish_article(article, language, changed_by=None):
    """
    Publish an article. This sets `article.published` to `True` and calls publish()
    which does the actual publishing.
    """
    article = article.reload()

    # get username
    if changed_by:
        username = changed_by.get_username()
    else:
        username = '******'

    with current_user(username):
        article.publish(language)

    return article.reload()
Exemplo n.º 7
0
def publish_article(article, language, changed_by=None):
    """
    Publish an article. This sets `article.published` to `True`
    and calls article.publish() which does the actual publishing.
    """
    article = article.reload()

    # get username
    if changed_by:
        username = changed_by.get_username()
    else:
        username = '******'

    with current_user(username):
        article.publish(language)

    return article.reload()
Exemplo n.º 8
0
def publish_page(page, user, language):
    """
    Publish a page. This sets `page.published` to `True` and calls publish()
    which does the actual publishing.

    See docs/extending_cms/api_reference.rst for more info
    """
    page = page.reload()

    if not page.has_publish_permission(user):
        raise PermissionDenied()
    # Set the current_user to have the page's changed_by
    # attribute set correctly.
    # 'user' is a user object, but current_user() just wants the username (a string).
    with current_user(user.get_username()):
        page.publish(language)
    return page.reload()
    def test_wizard_duplicate_slug(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()
        cat_2 = BlogCategory.objects.create(name='category 1 - blog 2', app_config=self.app_config_2)

        with current_user(self.user_staff):
            wiz = None
            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Blog':
                    break
            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [self.category_1.pk],
            }, prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance1 = form.save()
            self.assertEqual(instance1.slug, 'title-article')

            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [self.category_1.pk],
            }, prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_1.pk)
            self.assertTrue(form.is_valid())
            instance2 = form.save()
            self.assertEqual(instance2.slug, 'title-article-1')

            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Article':
                    break
            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [cat_2.pk],
            }, prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_2.pk)
            self.assertTrue(form.is_valid())
            instance3 = form.save()
            self.assertEqual(instance3.slug, 'title-article-2')
    def test_wizard_init(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()

        cat_1 = BlogCategory.objects.create(name='category 1 - blog 1', app_config=self.app_config_1)
        cat_2 = BlogCategory.objects.create(name='category 1 - blog 2', app_config=self.app_config_2)
        cats = {
            self.app_config_1.pk: cat_1,
            self.app_config_2.pk: cat_2,
        }
        with current_user(self.user_staff):
            wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
            for index, wiz in enumerate(wizs):
                app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                form = wiz.form()
                self.assertTrue(form.initial.get('app_config', False), app_config)
                self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])

                form = wiz.form(data={
                    '1-title': 'title{0}'.format(index),
                    '1-abstract': 'abstract{0}'.format(index),
                    '1-categories': [cats[app_config].pk],
                }, prefix=1)
                self.assertEqual(form.default_appconfig, app_config)
                self.assertTrue(form.is_valid())
                self.assertEqual(form.cleaned_data['app_config'].pk, app_config)
                instance = form.save()
                self.assertEqual(instance.author, self.user_staff)

            with self.settings(BLOG_AUTHOR_DEFAULT='normal'):
                for index, wiz in enumerate(wizs):
                    app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                    form = wiz.form(data={
                        '1-title': 'title-2{0}'.format(index),
                        '1-abstract': 'abstract-2{0}'.format(index),
                        '1-categories': [cats[app_config].pk],
                    }, prefix=1)
                    self.assertEqual(form.default_appconfig, app_config)
                    self.assertTrue(form.is_valid())
                    self.assertEqual(form.cleaned_data['app_config'].pk, app_config)
                    instance = form.save()
                    self.assertEqual(instance.author, self.user_normal)
Exemplo n.º 11
0
    def test_wizard_init_categories_check(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()

        with current_user(self.user_staff):
            wiz = None
            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Article':
                    break
            form = wiz.form(data=self.get_querydict({
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': self.category_1.pk,
            }), prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_2.pk)
            self.assertFalse(form.is_valid())
            self.assertTrue('categories' in form.errors.keys())
    def test_wizard_init_categories_check(self):
        from cms.utils.permissions import current_user
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()

        with current_user(self.user_staff):
            wiz = None
            for wiz in wizard_pool.get_entries():
                if wiz.model == Post and wiz.title == 'New Article':
                    break
            form = wiz.form(data={
                '1-title': 'title article',
                '1-abstract': 'abstract article',
                '1-categories': [self.category_1.pk],
            }, prefix=1)
            self.assertEqual(form.default_appconfig, self.app_config_2.pk)
            self.assertFalse(form.is_valid())
            self.assertTrue('categories' in form.errors.keys())
Exemplo n.º 13
0
def create_article(tree,
                   template,
                   title,
                   language,
                   slug=None,
                   description=None,
                   page_title=None,
                   menu_title=None,
                   meta_description=None,
                   created_by=None,
                   image=None,
                   publication_date=None,
                   publication_end_date=None,
                   published=False,
                   login_required=False,
                   creation_date=None,
                   categories=[]):
    """
    Create a CMS Article and it's title for the given language
    """

    # validate tree
    tree = tree.get_public_object()
    assert tree.application_urls == 'CMSArticlesApp'

    # validate template
    assert template in [tpl[0] for tpl in settings.CMS_ARTICLES_TEMPLATES]
    get_template(template)

    # validate language:
    assert language in get_language_list(
        tree.node.site_id), settings.CMS_LANGUAGES.get(tree.node.site_id)

    # validate publication date
    if publication_date:
        assert isinstance(publication_date, datetime.date)

    # validate publication end date
    if publication_end_date:
        assert isinstance(publication_end_date, datetime.date)

    # validate creation date
    if not creation_date:
        creation_date = publication_date
    if creation_date:
        assert isinstance(creation_date, datetime.date)

    # get username
    if created_by:
        try:
            username = created_by.get_username()
        except Exception:
            username = force_text(created_by)
    else:
        username = '******'

    with current_user(username):
        # create article
        article = Article.objects.create(
            tree=tree,
            template=template,
            login_required=login_required,
            creation_date=creation_date,
            publication_date=publication_date,
            publication_end_date=publication_end_date,
            languages=language,
        )
        for category in categories:
            article.categories.add(category)

        # create title
        create_title(
            article=article,
            language=language,
            title=title,
            slug=slug,
            description=description,
            page_title=page_title,
            menu_title=menu_title,
            meta_description=meta_description,
            creation_date=creation_date,
            image=image,
        )

        # publish article
        if published:
            article.publish(language)

    return article.reload()
Exemplo n.º 14
0
def publish_page(page: Page, by='admin'):
    with current_user(by):
        page.publish(settings.LANGUAGE_CODE)
    return page.reload()
Exemplo n.º 15
0
def create_article(tree, template, title, language, slug=None, description=None,
                   page_title=None, menu_title=None, meta_description=None,
                   created_by=None, image=None, publication_date=None, publication_end_date=None,
                   published=False, login_required=False, creation_date=None, categories=[]):
    """
    Create a CMS Article and it's title for the given language
    """

    # validate tree
    tree = tree.get_public_object()
    assert tree.application_urls == 'CMSArticlesApp'

    # validate template
    assert template in [tpl[0] for tpl in settings.CMS_ARTICLES_TEMPLATES]
    get_template(template)

    # validate language:
    assert language in get_language_list(tree.node.site_id), settings.CMS_LANGUAGES.get(tree.node.site_id)

    # validate publication date
    if publication_date:
        assert isinstance(publication_date, datetime.date)

    # validate publication end date
    if publication_end_date:
        assert isinstance(publication_end_date, datetime.date)

    # validate creation date
    if not creation_date:
        creation_date = publication_date
    if creation_date:
        assert isinstance(creation_date, datetime.date)

    # get username
    if created_by:
        try:
            username = created_by.get_username()
        except Exception:
            username = force_text(created_by)
    else:
        username = '******'

    with current_user(username):
        # create article
        article = Article.objects.create(
            tree=tree,
            template=template,
            login_required=login_required,
            creation_date=creation_date,
            publication_date=publication_date,
            publication_end_date=publication_end_date,
            languages=language,
        )
        for category in categories:
            article.categories.add(category)

        # create title
        create_title(
            article=article,
            language=language,
            title=title,
            slug=slug,
            description=description,
            page_title=page_title,
            menu_title=menu_title,
            meta_description=meta_description,
            creation_date=creation_date,
            image=image,
        )

        # publish article
        if published:
            article.publish(language)

    return article.reload()