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")
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)
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)
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 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 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()
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()
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)
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())
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()
def publish_page(page: Page, by='admin'): with current_user(by): page.publish(settings.LANGUAGE_CODE) return page.reload()
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()