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()
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)
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)
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()
) 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
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()
) 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): 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)
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)
) 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/$',