def test_templates(self):
        pages = self.get_pages()
        self.get_posts()

        with smart_override("en"):
            request = self.get_page_request(pages[1], self.user, edit=True)
            view_obj = PostListView()
            view_obj.request = request
            view_obj.namespace = self.app_config_1.namespace
            view_obj.config = self.app_config_1
            self.assertEqual(view_obj.get_template_names(), os.path.join("djangocms_blog", "post_list.html"))

            self.app_config_1.app_data.config.template_prefix = "whatever"
            self.app_config_1.save()
            self.assertEqual(view_obj.get_template_names(), os.path.join("whatever", "post_list.html"))
            self.app_config_1.app_data.config.template_prefix = ""
            self.app_config_1.save()
    def test_templates(self):
        posts = self.get_posts()
        pages = self.get_pages()

        with smart_override('en'):
            request = self.get_page_request(pages[1], self.user, edit=True)
            view_obj = PostListView()
            view_obj.request = request
            view_obj.namespace = self.app_config_1.namespace
            view_obj.config = self.app_config_1
            self.assertEqual(view_obj.get_template_names(), os.path.join('djangocms_blog', 'post_list.html'))

            self.app_config_1.app_data.config.template_prefix = 'whatever'
            self.app_config_1.save()
            self.assertEqual(view_obj.get_template_names(), os.path.join('whatever', 'post_list.html'))
            self.app_config_1.app_data.config.template_prefix = ''
            self.app_config_1.save()
Exemple #3
0
    def test_post_list_view(self):
        pages = self.get_pages()
        posts = self.get_posts()

        request = self.get_request(pages[1], 'en', AnonymousUser())

        with smart_override('en'):
            view_obj = PostListView()
            view_obj.request = request
            view_obj.namespace, view_obj.config = get_app_instance(request)
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE, None),
                             None)

            self.assertEqual(list(view_obj.get_queryset()), [posts[0]])
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE),
                             self.app_config_1)

            request = self.get_page_request(pages[1],
                                            self.user,
                                            lang='en',
                                            edit=False)
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            view_obj.kwargs = {}
            qs = view_obj.get_queryset()
            self.assertEqual(qs.count(), 1)
            self.assertEqual(set(qs), set([posts[0]]))

            request = self.get_page_request(pages[1],
                                            self.user,
                                            lang='en',
                                            edit=True)
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            self.assertEqual(set(view_obj.get_queryset()),
                             set([posts[0], posts[1], posts[2]]))

            view_obj.kwargs = {}
            view_obj.args = ()
            view_obj.object_list = view_obj.get_queryset()
            view_obj.paginate_by = 1
            context = view_obj.get_context_data(
                object_list=view_obj.object_list)
            self.assertTrue(context['is_paginated'])
            self.assertEqual(list(context['post_list']), [posts[0]])
            self.assertEqual(context['paginator'].count, 3)
            self.assertEqual(context['post_list'][0].title, 'First post')
            response = view_obj.render_to_response(context)
            self.assertContains(response,
                                context['post_list'][0].get_absolute_url())
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE),
                             self.app_config_1)

            posts[1].sites.add(self.site_2)
            self.assertTrue(view_obj.get_queryset().count(), 2)
            self.assertFalse(posts[1] in view_obj.get_queryset())

        with smart_override('it'):
            request = self.get_page_request(pages[1],
                                            self.user,
                                            lang='it',
                                            edit=True)
            view_obj = PostListView()
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            view_obj.args = ()
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            context = view_obj.get_context_data(
                object_list=view_obj.object_list)
            self.assertEqual(context['post_list'][0].title, 'Primo post')
            response = view_obj.render_to_response(context)
            self.assertContains(response,
                                context['post_list'][0].get_absolute_url())
            blog_menu = request.toolbar.get_or_create_menu(
                'djangocms_blog', _('Blog'))

            self.assertEqual(len(blog_menu.items), 3)
            self.assertEqual(
                len(
                    blog_menu.find_items(
                        ModalItem,
                        url=reverse('admin:djangocms_blog_post_changelist'))),
                1)
            self.assertEqual(
                len(
                    blog_menu.find_items(
                        ModalItem,
                        url=reverse('admin:djangocms_blog_post_add'))), 1)
            self.assertEqual(
                len(
                    blog_menu.find_items(
                        ModalItem,
                        url=reverse('admin:djangocms_blog_blogconfig_change',
                                    args=(self.app_config_1.pk, )))), 1)
Exemple #4
0
    def test_post_list_view_fallback(self):
        pages = self.get_pages()
        self.get_posts()

        PARLER_FALLBACK = {
            1: (
                {
                    'code': 'en'
                },
                {
                    'code': 'it'
                },
                {
                    'code': 'fr',
                    'hide_untranslated': True
                },
            ),
            'default': {
                'fallback': 'en',
                'hide_untranslated': False,
            }
        }

        with smart_override('fr'):
            view_obj = PostListView()
            request = self.get_page_request(pages[1],
                                            self.user,
                                            lang='fr',
                                            edit=True)
            view_obj.request = request
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(view_obj.get_queryset().count(), 3)

            PARLER_FALLBACK = add_default_language_settings(PARLER_FALLBACK)
            with override_parler_settings(PARLER_LANGUAGES=PARLER_FALLBACK):

                view_obj = PostListView()
                request = self.get_page_request(pages[1],
                                                self.user,
                                                lang='fr',
                                                edit=True)
                view_obj.request = request
                view_obj.namespace, view_obj.config = get_app_instance(request)
                view_obj.kwargs = {}
                view_obj.object_list = view_obj.get_queryset()
                view_obj.get_context_data(object_list=view_obj.object_list)
                self.assertEqual(view_obj.get_queryset().count(), 0)
Exemple #5
0
    def test_get_view_url(self):
        pages = self.get_pages()
        self.get_posts()

        # Test the custom version of get_view_url against the different namespaces
        request = self.get_request(pages[1], 'en', AnonymousUser())
        view_obj_1 = PostListView()
        view_obj_1.request = request
        view_obj_1.args = ()
        view_obj_1.kwargs = {}
        view_obj_1.namespace, view_obj_1.config = get_app_instance(request)
        self.assertEqual(
            view_obj_1.get_view_url(),
            'http://testserver{0}'.format(pages[1].get_absolute_url()))

        request = self.get_request(pages[2], 'en', AnonymousUser())
        view_obj_2 = PostListView()
        view_obj_2.request = request
        view_obj_2.args = ()
        view_obj_2.kwargs = {}
        view_obj_2.namespace, view_obj_2.config = get_app_instance(request)
        self.assertEqual(
            view_obj_2.get_view_url(),
            'http://testserver{0}'.format(pages[2].get_absolute_url()))

        view_obj_2.view_url_name = None
        with self.assertRaises(ImproperlyConfigured):
            view_obj_2.get_view_url()
Exemple #6
0
)


def get_urls():
    urls = get_setting("PERMALINK_URLS")
    details = []
    for urlconf in urls.values():
        details.append(
            path(urlconf, PostDetailView.as_view(), name="post-detail"), )
    return details


detail_urls = get_urls()

urlpatterns = [
    path("latests/", PostListView.as_view(), name="posts-latest"),
    path("feed/", LatestEntriesFeed(), name="posts-latest-feed"),
    path("feed/fb/", FBInstantArticles(), name="posts-latest-feed-fb"),
    path("<int:year>/", PostArchiveView.as_view(), name="posts-archive"),
    path("<int:year>/<int:month>/",
         PostArchiveView.as_view(),
         name="posts-archive"),
    path("author/<str:username>/",
         AuthorEntriesView.as_view(),
         name="posts-author"),
    path("category/<str:category>/",
         CategoryEntriesView.as_view(),
         name="posts-category"),
    path("tag/<slug:tag>/", TaggedListView.as_view(), name="posts-tagged"),
    path("tag/<slug:tag>/feed/", TagFeed(), name="posts-tagged-feed"),
] + detail_urls
Exemple #7
0
    def test_post_list_view(self):
        page1, page2 = self.get_pages()
        post1, post2 = self.get_posts()

        request = self.get_page_request(page1, AnonymousUser(), r'/en/blog/', edit=False)
        activate('en')
        view_obj = PostListView()
        view_obj.request = request

        self.assertEqual(list(view_obj.get_queryset()), [post1])

        request = self.get_page_request(page1, self.user, r'/en/blog/', edit=False)
        view_obj.request = request
        self.assertEqual(set(view_obj.get_queryset()), set([post1, post2]))

        view_obj.kwargs = {}
        view_obj.object_list = view_obj.get_queryset()
        view_obj.paginate_by = 1
        context = view_obj.get_context_data(object_list=view_obj.object_list)
        self.assertTrue(context['is_paginated'])
        self.assertEqual(list(context['post_list']), [post2])
        self.assertEqual(context['paginator'].count, 2)
        self.assertEqual(context['post_list'][0].title, 'Second post')
        response = view_obj.render_to_response(context)
        self.assertContains(response, context['post_list'][0].get_absolute_url())

        request = self.get_page_request(page1, self.user, r'/it/blog/', lang_code='it', edit=False)
        activate('it')
        view_obj.request = request
        view_obj.object_list = view_obj.get_queryset()
        context = view_obj.get_context_data(object_list=view_obj.object_list)
        self.assertEqual(context['post_list'][0].title, 'Secondo post')
        response = view_obj.render_to_response(context)
        self.assertContains(response, context['post_list'][0].get_absolute_url())
    def test_post_list_view(self):
        posts = self.get_posts()
        pages = self.get_pages()

        request = self.get_request(pages[1], 'en', AnonymousUser())

        with smart_override('en'):
            view_obj = PostListView()
            view_obj.request = request
            view_obj.namespace, view_obj.config = get_app_instance(request)
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE, None), None)

            self.assertEqual(list(view_obj.get_queryset()), [posts[0]])
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE), self.app_config_1)

            request = self.get_page_request(pages[1], self.user, lang='en', edit=False)
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            view_obj.kwargs = {}
            qs = view_obj.get_queryset()
            self.assertEqual(qs.count(), 1)
            self.assertEqual(set(qs), set([posts[0]]))

            request = self.get_page_request(pages[1], self.user, lang='en', edit=True)
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            self.assertEqual(set(view_obj.get_queryset()), set([posts[0], posts[1], posts[2]]))

            view_obj.kwargs = {}
            view_obj.args = ()
            view_obj.object_list = view_obj.get_queryset()
            view_obj.paginate_by = 1
            context = view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertTrue(context['is_paginated'])
            self.assertEqual(list(context['post_list']), [posts[0]])
            self.assertEqual(context['paginator'].count, 3)
            self.assertEqual(context['post_list'][0].title, 'First post')
            response = view_obj.render_to_response(context)
            self.assertContains(response, context['post_list'][0].get_absolute_url())
            self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE), self.app_config_1)

            posts[1].sites.add(self.site_2)
            self.assertTrue(view_obj.get_queryset().count(), 2)
            self.assertFalse(posts[1] in view_obj.get_queryset())

        with smart_override('it'):
            request = self.get_page_request(pages[1], self.user, lang='it', edit=True)
            view_obj = PostListView()
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.request = request
            view_obj.args = ()
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            context = view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(context['post_list'][0].title, 'Primo post')
            response = view_obj.render_to_response(context)
            self.assertContains(response, context['post_list'][0].get_absolute_url())
            blog_menu = request.toolbar.get_or_create_menu('djangocms_blog', _('Blog'))

            self.assertEqual(len(blog_menu.items), 3)
            self.assertEqual(len(blog_menu.find_items(
                ModalItem, url=reverse('admin:djangocms_blog_post_changelist')
            )), 1)
            self.assertEqual(len(blog_menu.find_items(
                ModalItem, url=reverse('admin:djangocms_blog_post_add')
            )), 1)
            self.assertEqual(len(blog_menu.find_items(
                ModalItem, url=reverse(
                    'admin:djangocms_blog_blogconfig_change', args=(self.app_config_1.pk,)
                )
            )), 1)
    def test_post_list_view_fallback(self):
        posts = self.get_posts()
        pages = self.get_pages()

        PARLER_FALLBACK = {
            1: (
                {'code': 'en'},
                {'code': 'it'},
                {'code': 'fr', 'hide_untranslated': True},
            ),
            'default': {
                'fallback': 'en',
                'hide_untranslated': False,
            }
        }

        with smart_override('fr'):
            view_obj = PostListView()
            request = self.get_page_request(pages[1], self.user, lang='fr', edit=True)
            view_obj.request = request
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(view_obj.get_queryset().count(), 3)

            PARLER_FALLBACK = add_default_language_settings(PARLER_FALLBACK)
            with override_parler_settings(PARLER_LANGUAGES=PARLER_FALLBACK):

                view_obj = PostListView()
                request = self.get_page_request(pages[1], self.user, lang='fr', edit=True)
                view_obj.request = request
                view_obj.namespace, view_obj.config = get_app_instance(request)
                view_obj.kwargs = {}
                view_obj.object_list = view_obj.get_queryset()
                view_obj.get_context_data(object_list=view_obj.object_list)
                self.assertEqual(view_obj.get_queryset().count(), 0)
    def test_get_view_url(self):
        posts = self.get_posts()
        pages = self.get_pages()

        # Test the custom version of get_view_url against the different namespaces
        request = self.get_request(pages[1], 'en', AnonymousUser())
        view_obj_1 = PostListView()
        view_obj_1.request = request
        view_obj_1.args = ()
        view_obj_1.kwargs = {}
        view_obj_1.namespace, view_obj_1.config = get_app_instance(request)
        self.assertEqual(
            view_obj_1.get_view_url(),
            'http://testserver{0}'.format(pages[1].get_absolute_url())
        )

        request = self.get_request(pages[2], 'en', AnonymousUser())
        view_obj_2 = PostListView()
        view_obj_2.request = request
        view_obj_2.args = ()
        view_obj_2.kwargs = {}
        view_obj_2.namespace, view_obj_2.config = get_app_instance(request)
        self.assertEqual(
            view_obj_2.get_view_url(),
            'http://testserver{0}'.format(pages[2].get_absolute_url())
        )

        view_obj_2.view_url_name = None
        with self.assertRaises(ImproperlyConfigured):
            view_obj_2.get_view_url()
Exemple #11
0
)


def get_urls():
    urls = get_setting('PERMALINK_URLS')
    details = []
    for urlconf in urls.values():
        details.append(
            url(urlconf, PostDetailView.as_view(), name='post-detail'), )
    return details


detail_urls = get_urls()

urlpatterns = [
    url(r'^latests/$', PostListView.as_view(), name='posts-latest'),
    url(r'^feed/$', LatestEntriesFeed(), name='posts-latest-feed'),
    url(r'^feed/fb/$', FBInstantArticles(), name='posts-latest-feed-fb'),
    url(r'^(?P<year>\d{4})/$', PostArchiveView.as_view(),
        name='posts-archive'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/$',
        PostArchiveView.as_view(),
        name='posts-archive'),
    url(r'^author/(?P<username>[\w\.@+-]+)/$',
        AuthorEntriesView.as_view(),
        name='posts-author'),
    url(r'^category/(?P<category>[\w\.@+-]+)/$',
        CategoryEntriesView.as_view(),
        name='posts-category'),
    url(r'^tag/(?P<tag>[-\w]+)/$',
        TaggedListView.as_view(),
Exemple #12
0
    def test_post_list_view_fallback(self):
        page1, page2 = self.get_pages()
        post1, post2 = self.get_posts()

        PARLER_FALLBACK = {
            1: (
                {
                    'code': 'en'
                },
                {
                    'code': 'it'
                },
                {
                    'code': 'fr',
                    'hide_untranslated': True
                },
            ),
            'default': {
                'fallback': 'en',
                'hide_untranslated': False,
            }
        }

        view_obj = PostListView()
        request = self.get_page_request(page1,
                                        self.user,
                                        r'/fr/blog/',
                                        lang_code='fr',
                                        edit=True)
        activate('fr')
        view_obj.request = request
        view_obj.kwargs = {}
        view_obj.object_list = view_obj.get_queryset()
        view_obj.get_context_data(object_list=view_obj.object_list)
        self.assertEqual(view_obj.get_queryset().count(), 2)

        PARLER_FALLBACK = add_default_language_settings(PARLER_FALLBACK)
        with override_parler_settings(PARLER_LANGUAGES=PARLER_FALLBACK):

            view_obj = PostListView()
            request = self.get_page_request(page1,
                                            self.user,
                                            r'/fr/blog/',
                                            lang_code='fr',
                                            edit=True)
            activate('fr')
            view_obj.request = request
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(view_obj.get_queryset().count(), 0)
Exemple #13
0
    def test_post_list_view_fallback(self):
        page1, page2 = self.get_pages()
        post1, post2 = self.get_posts()

        PARLER_FALLBACK = {
            1: (
                {'code': 'en'},
                {'code': 'it'},
                {'code': 'fr', 'hide_untranslated': True},
            ),
            'default': {
                'fallback': 'en',
                'hide_untranslated': False,
            }
        }

        view_obj = PostListView()
        request = self.get_page_request(page1, self.user, r'/fr/blog/', lang_code='fr', edit=True)
        activate('fr')
        view_obj.request = request
        view_obj.kwargs = {}
        view_obj.object_list = view_obj.get_queryset()
        view_obj.get_context_data(object_list=view_obj.object_list)
        self.assertEqual(view_obj.get_queryset().count(), 2)

        PARLER_FALLBACK = add_default_language_settings(PARLER_FALLBACK)
        with override_parler_settings(PARLER_LANGUAGES=PARLER_FALLBACK):

            view_obj = PostListView()
            request = self.get_page_request(page1, self.user, r'/fr/blog/', lang_code='fr', edit=True)
            activate('fr')
            view_obj.request = request
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(view_obj.get_queryset().count(), 0)
Exemple #14
0
)


def get_urls():
    urls = get_setting("PERMALINK_URLS")
    details = []
    for urlconf in urls.values():
        details.append(
            url(urlconf, PostDetailView.as_view(), name="post-detail"), )
    return details


detail_urls = get_urls()

urlpatterns = [
    url(r"^latests/$", PostListView.as_view(), name="posts-latest"),
    url(r"^feed/$", LatestEntriesFeed(), name="posts-latest-feed"),
    url(r"^feed/fb/$", FBInstantArticles(), name="posts-latest-feed-fb"),
    url(r"^(?P<year>\d{4})/$", PostArchiveView.as_view(),
        name="posts-archive"),
    url(r"^(?P<year>\d{4})/(?P<month>\d{1,2})/$",
        PostArchiveView.as_view(),
        name="posts-archive"),
    url(r"^author/(?P<username>[\w\.@+-]+)/$",
        AuthorEntriesView.as_view(),
        name="posts-author"),
    url(r"^category/(?P<category>[\w\.@+-]+)/$",
        CategoryEntriesView.as_view(),
        name="posts-category"),
    url(r"^tag/(?P<tag>[-\w]+)/$",
        TaggedListView.as_view(),
    def test_post_list_view_fallback(self):
        pages = self.get_pages()
        self.get_posts()

        PARLER_FALLBACK = {  # noqa: N806
            1: (
                {"code": "en"},
                {"code": "it"},
                {"code": "fr", "hide_untranslated": True},
            ),
            "default": {"fallback": "en", "hide_untranslated": False},
        }

        with smart_override("fr"):
            view_obj = PostListView()
            request = self.get_page_request(pages[1], self.user, lang="fr", edit=True)
            view_obj.request = request
            view_obj.namespace, view_obj.config = get_app_instance(request)
            view_obj.kwargs = {}
            view_obj.object_list = view_obj.get_queryset()
            view_obj.get_context_data(object_list=view_obj.object_list)
            self.assertEqual(view_obj.get_queryset().count(), 3)

            PARLER_FALLBACK = add_default_language_settings(PARLER_FALLBACK)  # noqa: N806
            with override_parler_settings(PARLER_LANGUAGES=PARLER_FALLBACK):

                view_obj = PostListView()
                request = self.get_page_request(pages[1], self.user, lang="fr", edit=True)
                view_obj.request = request
                view_obj.namespace, view_obj.config = get_app_instance(request)
                view_obj.kwargs = {}
                view_obj.object_list = view_obj.get_queryset()
                view_obj.get_context_data(object_list=view_obj.object_list)
                self.assertEqual(view_obj.get_queryset().count(), 0)
def get_urls():
    urls = get_setting('PERMALINK_URLS')
    details = []
    for urlconf in urls.values():
        details.append(
            url(urlconf, PostDetailView.as_view(), name='post-detail'),
        )
    return details


detail_urls = get_urls()

urlpatterns = [
    url(r'^latests/$',
        PostListView.as_view(), name='posts-latest'),
    url(r'^feed/$',
        LatestEntriesFeed(), name='posts-latest-feed'),
    url(r'^feed/fb/$',
        FBInstantArticles(), name='posts-latest-feed-fb'),
    url(r'^(?P<year>\d{4})/$',
        PostArchiveView.as_view(), name='posts-archive'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/$',
        PostArchiveView.as_view(), name='posts-archive'),
    url(r'^author/(?P<username>[\w\.@+-]+)/$',
        AuthorEntriesView.as_view(), name='posts-author'),
    url(r'^category/(?P<category>[\w\.@+-]+)/$',
        CategoryEntriesView.as_view(), name='posts-category'),
    url(r'^tag/(?P<tag>[-\w]+)/$',
        TaggedListView.as_view(), name='posts-tagged'),
    url(r'^tag/(?P<tag>[-\w]+)/feed/$',