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 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 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 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_modifier(self): """ Tests if correct category is selected in the menu according to context (view object) """ posts = self.get_posts() pages = self.get_pages() tests = ( # view class, view kwarg, view object, category (PostDetailView, "slug", posts[0], posts[0].categories.first()), (CategoryEntriesView, "category", self.cats[2], self.cats[2]), ) for view_cls, kwarg, obj, cat in tests: request = self.get_page_request(pages[1], self.user, path=obj.get_absolute_url()) with smart_override("en"): with switch_language(obj, "en"): view_obj = view_cls() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.app_config = self.app_config_1 view_obj.kwargs = {kwarg: obj.slug} view_obj.get(request) # check if selected menu node points to cat nodes = menu_pool.get_nodes(request, namespace="BlogCategoryMenu") found = False for node in nodes: if node.selected: self.assertEqual(node.url, obj.get_absolute_url()) found = True break self.assertTrue(found)
def test_instant_articles(self): self.user.first_name = "Admin" self.user.last_name = "User" self.user.save() pages = self.get_pages() posts = self.get_posts() posts[0].tags.add("tag 1", "tag 2", "tag 3", "tag 4") posts[0].categories.add(self.category_1) posts[0].author = self.user posts[0].save() add_plugin(posts[0].content, "TextPlugin", language="en", body="<h3>Ciao</h3><p></p><p>Ciao</p>") with smart_override("en"): with switch_language(posts[0], "en"): request = self.get_page_request(pages[1], self.user, path=posts[0].get_absolute_url()) feed = FBInstantArticles() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) xml = feed(request) self.assertContains(xml, "<guid>{}</guid>".format(posts[0].guid)) self.assertContains(xml, "content:encoded") self.assertContains( xml, 'class="op-modified" datetime="{}"'.format( posts[0].date_modified.strftime(FBInstantFeed.date_format) ), ) self.assertContains(xml, '<link rel="canonical" href="{}"/>'.format(posts[0].get_full_url())) # Assert text transformation self.assertContains(xml, "<h2>Ciao</h2><p>Ciao</p>") self.assertContains(xml, "<a>Admin User</a>")
def test_taggedlist_view(self): pages = self.get_pages() posts = self.get_posts() posts[0].tags.add("tag 1", "tag 2", "tag 3", "tag 4") posts[0].save() posts[1].tags.add("tag 6", "tag 2", "tag 5", "tag 8") posts[1].save() with smart_override("en"): request = self.get_page_request(pages[1], self.user, lang="en", edit=True) view_obj = TaggedListView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {"tag": "tag-2"} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 2) self.assertEqual(set(qs), {posts[0], posts[1]}) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data(object_list=view_obj.object_list) self.assertTrue(context["tagged_entries"], "tag-2") self.assertTrue(context["is_paginated"]) self.assertEqual(list(context["post_list"]), [posts[0]]) self.assertEqual(context["paginator"].count, 2) self.assertEqual(context["post_list"][0].title, "First post")
def test_author_entries_view(self): pages = self.get_pages() posts = self.get_posts() with smart_override("en"): request = self.get_page_request(pages[1], self.user, lang="en", edit=True) view_obj = AuthorEntriesView() view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.request = request view_obj.kwargs = {"username": self.user.get_username()} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 3) self.assertEqual(set(qs), {posts[0], posts[1], posts[2]}) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data(object_list=view_obj.object_list) self.assertTrue(context["author"]) self.assertEqual(context["author"], self.user) 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") request = self.get_page_request(pages[1], self.user, edit=False) view_obj.request = request qs = view_obj.get_queryset() self.assertEqual(qs.count(), 1)
def test_taggedlist_view(self): pages = self.get_pages() posts = self.get_posts() posts[0].tags.add('tag 1', 'tag 2', 'tag 3', 'tag 4') posts[0].save() posts[1].tags.add('tag 6', 'tag 2', 'tag 5', 'tag 8') posts[1].save() with smart_override('en'): request = self.get_page_request(pages[1], self.user, lang='en', edit=True) view_obj = TaggedListView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'tag': 'tag-2'} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 2) self.assertEqual(set(qs), set([posts[0], posts[1]])) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data(object_list=view_obj.object_list) self.assertTrue(context['tagged_entries'], 'tag-2') self.assertTrue(context['is_paginated']) self.assertEqual(list(context['post_list']), [posts[0]]) self.assertEqual(context['paginator'].count, 2) self.assertEqual(context['post_list'][0].title, 'First post')
def test_author_entries_view(self): posts = self.get_posts() pages = self.get_pages() with smart_override('en'): request = self.get_page_request(pages[1], self.user, lang='en', edit=True) view_obj = AuthorEntriesView() view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.request = request view_obj.kwargs = {'username': self.user.get_username()} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 3) self.assertEqual(set(qs), set([posts[0], posts[1], posts[2]])) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data(object_list=view_obj.object_list) self.assertTrue(context['author']) self.assertEqual(context['author'], self.user) 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') request = self.get_page_request(pages[1], self.user, edit=False) view_obj.request = request qs = view_obj.get_queryset() self.assertEqual(qs.count(), 1)
def test_instant_articles(self): self.user.first_name = 'Admin' self.user.last_name = 'User' self.user.save() posts = self.get_posts() pages = self.get_pages() posts[0].tags.add('tag 1', 'tag 2', 'tag 3', 'tag 4') posts[0].categories.add(self.category_1) posts[0].author = self.user posts[0].save() add_plugin( posts[0].content, 'TextPlugin', language='en', body='<h3>Ciao</h3><p></p><p>Ciao</p>' ) with smart_override('en'): with switch_language(posts[0], 'en'): request = self.get_page_request( pages[1], self.user, path=posts[0].get_absolute_url() ) feed = FBInstantArticles() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) xml = feed(request) self.assertContains(xml, '<guid>{0}</guid>'.format(posts[0].guid)) self.assertContains(xml, 'content:encoded') self.assertContains(xml, 'class="op-modified" datetime="{0}"'.format( posts[0].date_modified.strftime(FBInstantFeed.date_format) )) self.assertContains(xml, '<link rel="canonical" href="{0}"/>'.format( posts[0].get_full_url() )) # Assert text transformation self.assertContains(xml, '<h2>Ciao</h2><p>Ciao</p>') self.assertContains(xml, '<a>Admin User</a>')
def test_post_archive_view(self): pages = self.get_pages() posts = self.get_posts() with smart_override('en'): request = self.get_page_request(pages[1], AnonymousUser(), lang='en', edit=False) view_obj = PostArchiveView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'year': now().year, 'month': now().month} # One post only, anonymous request qs = view_obj.get_queryset() self.assertEqual(qs.count(), 1) self.assertEqual(list(qs), [posts[0]]) view_obj.object_list = qs context = view_obj.get_context_data( object_list=view_obj.object_list) self.assertEqual( context['archive_date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
def test_author_entries_view(self): pages = self.get_pages() posts = self.get_posts() with smart_override('en'): request = self.get_page_request(pages[1], self.user, lang='en', edit=True) view_obj = AuthorEntriesView() view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.request = request view_obj.kwargs = {'username': self.user.get_username()} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 3) self.assertEqual(set(qs), set([posts[0], posts[1], posts[2]])) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data( object_list=view_obj.object_list) self.assertTrue(context['author']) self.assertEqual(context['author'], self.user) 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') request = self.get_page_request(pages[1], self.user, edit=False) view_obj.request = request qs = view_obj.get_queryset() self.assertEqual(qs.count(), 1)
def test_taggedlist_view(self): pages = self.get_pages() posts = self.get_posts() posts[0].tags.add('tag 1', 'tag 2', 'tag 3', 'tag 4') posts[0].save() posts[1].tags.add('tag 6', 'tag 2', 'tag 5', 'tag 8') posts[1].save() with smart_override('en'): request = self.get_page_request(pages[1], self.user, lang='en', edit=True) view_obj = TaggedListView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'tag': 'tag-2'} qs = view_obj.get_queryset() self.assertEqual(qs.count(), 2) self.assertEqual(set(qs), set([posts[0], posts[1]])) view_obj.paginate_by = 1 view_obj.object_list = qs context = view_obj.get_context_data( object_list=view_obj.object_list) self.assertTrue(context['tagged_entries'], 'tag-2') self.assertTrue(context['is_paginated']) self.assertEqual(list(context['post_list']), [posts[0]]) self.assertEqual(context['paginator'].count, 2) self.assertEqual(context['post_list'][0].title, 'First post')
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) language = get_language_from_request(request, check_path=True) self.event = (Event.objects.namespace( self.namespace).active_translations( language, slug=kwargs['slug']).language(language).get()) return super(ResetEventRegistration, self).dispatch(request, *args, **kwargs)
def render(self, context): namespace, config = get_app_instance(context.request) values = { 'namespace': namespace, 'config': config, } with context.push(**values): return self.nodelist.render(context)
def __call__(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) language = get_language_from_request(request) site_id = getattr(get_current_site(request), 'id', None) self.valid_languages = get_valid_languages(self.namespace, language_code=language, site_id=site_id) return super(LatestEventsFeed, self).__call__(request, *args, **kwargs)
def test_non_existing_blog_category_should_raise_404(self): pages = self.get_pages() with smart_override('en'): request = self.get_request(pages[1], 'en', AnonymousUser()) view_obj = CategoryEntriesView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) with self.assertRaises(Http404): view_obj.kwargs = {'category': 'unknown-category'} view_obj.get_queryset()
def test_post_detail_view(self): pages = self.get_pages() posts = self.get_posts() with smart_override("en"): with switch_language(posts[0], "en"): request = self.get_page_request(pages[1], AnonymousUser(), lang="en", edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) with self.assertRaises(Http404): view_obj.kwargs = {"slug": "not-existing"} post_obj = view_obj.get_object() view_obj.kwargs = {"slug": posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, "en") with smart_override("it"): with switch_language(posts[0], "it"): request = self.get_page_request(pages[1], AnonymousUser(), lang="it", edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {"slug": posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, "it") view_obj.object = post_obj context = view_obj.get_context_data() self.assertEqual(context["post"], posts[0]) self.assertEqual(context["post"].language_code, "it") self.assertTrue(context["meta"])
def test_feed(self): self.user.first_name = "Admin" self.user.last_name = "User" self.user.save() pages = self.get_pages() posts = self.get_posts() posts[0].tags.add("tag 1", "tag 2", "tag 3", "tag 4") posts[0].author = self.user posts[0].save() posts[1].tags.add("tag 6", "tag 2", "tag 5", "tag 8") posts[1].save() posts[0].set_current_language("en") with smart_override("en"): with switch_language(posts[0], "en"): request = self.get_page_request( pages[1], self.user, path=posts[0].get_absolute_url()) feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) self.reload_urlconf() xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, "Blog articles on example.com") self.assertContains(xml, "Admin User</dc:creator>") with smart_override("it"): with switch_language(posts[0], "it"): feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) request = self.get_page_request( pages[1], self.user, path=posts[0].get_absolute_url()) xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, "Articoli del blog su example.com") feed = TagFeed() feed.namespace = self.app_config_1.namespace feed.config = self.app_config_1 self.assertEqual(list(feed.items("tag-2")), [posts[0]])
def test_non_existing_author_should_raise_404(self): pages = self.get_pages() with smart_override('en'): request = self.get_request(pages[1], 'en', AnonymousUser()) view_obj = AuthorEntriesView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) with self.assertRaises(Http404): view_obj.kwargs = {'username': '******'} view_obj.get_context_data()
def __call__(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) language = get_language_from_request(request) site_id = getattr(get_current_site(request), 'id', None) self.valid_languages = get_valid_languages( self.namespace, language_code=language, site_id=site_id) return super(LatestArticlesFeed, self).__call__( request, *args, **kwargs)
def test_feed(self): self.user.first_name = 'Admin' self.user.last_name = 'User' self.user.save() pages = self.get_pages() posts = self.get_posts() posts[0].tags.add('tag 1', 'tag 2', 'tag 3', 'tag 4') posts[0].author = self.user posts[0].save() posts[1].tags.add('tag 6', 'tag 2', 'tag 5', 'tag 8') posts[1].save() posts[0].set_current_language('en') with smart_override('en'): with switch_language(posts[0], 'en'): request = self.get_page_request( pages[1], self.user, path=posts[0].get_absolute_url()) feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) self.reload_urlconf() xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, 'Blog articles on example.com') self.assertContains(xml, 'Admin User</dc:creator>') with smart_override('it'): with switch_language(posts[0], 'it'): feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) request = self.get_page_request( pages[1], self.user, path=posts[0].get_absolute_url()) xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, 'Articoli del blog su example.com') feed = TagFeed() feed.namespace = self.app_config_1.namespace feed.config = self.app_config_1 self.assertEqual(list(feed.items('tag-2')), [posts[0]])
def test_post_detail_view(self): pages = self.get_pages() posts = self.get_posts() with smart_override('en'): with switch_language(posts[0], 'en'): request = self.get_page_request(pages[1], AnonymousUser(), lang='en', edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) with self.assertRaises(Http404): view_obj.kwargs = {'slug': 'not-existing'} post_obj = view_obj.get_object() view_obj.kwargs = {'slug': posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, 'en') with smart_override('it'): with switch_language(posts[0], 'it'): request = self.get_page_request(pages[1], AnonymousUser(), lang='it', edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'slug': posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, 'it') view_obj.object = post_obj context = view_obj.get_context_data() self.assertEqual(context['post'], posts[0]) self.assertEqual(context['post'].language_code, 'it') self.assertTrue(context['meta'])
def __get_newsblog_config(self): try: __, config = get_app_instance(self.request) if not isinstance(config, NewsBlogConfig): # This is not the app_hook you are looking for. return None except ImproperlyConfigured: # There is no app_hook at all. return None return config
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) language = get_language_from_request(request, check_path=True) self.event = ( Event.objects.namespace(self.namespace) .active_translations(language, slug=kwargs['slug']) .language(language) .get() ) return super(ResetEventRegistration, self).dispatch(request, *args, **kwargs)
def get_app_config(self, config_class=None): try: __, config = get_app_instance(self.request) if not isinstance(config, config_class): # This is not the app_hook you are looking for. return None except ImproperlyConfigured: # There is no app_hook at all. return None return config
def __get_services_config(self): try: __, config = get_app_instance(self.request) if not isinstance(config, ServicesConfig): # This is not the app_hook you are looking for. return None except ImproperlyConfigured: # There is no app_hook at all. return None return config
def get_app_config(self, config_model): try: __, config = get_app_instance(self.request) if not isinstance(config, config_model): # This is not the app_hook you are looking for. return None except ImproperlyConfigured: # There is no app_hook at all. return None return config
def test_feed(self): self.user.first_name = 'Admin' self.user.last_name = 'User' self.user.save() posts = self.get_posts() pages = self.get_pages() posts[0].tags.add('tag 1', 'tag 2', 'tag 3', 'tag 4') posts[0].author = self.user posts[0].save() posts[1].tags.add('tag 6', 'tag 2', 'tag 5', 'tag 8') posts[1].save() posts[0].set_current_language('en') with smart_override('en'): with switch_language(posts[0], 'en'): request = self.get_page_request(pages[1], self.user, path=posts[0].get_absolute_url()) feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) self.reload_urlconf() xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, 'Blog articles on example.com') self.assertContains(xml, 'Admin User</dc:creator>') with smart_override('it'): with switch_language(posts[0], 'it'): feed = LatestEntriesFeed() feed.namespace, feed.config = get_app_instance(request) self.assertEqual(list(feed.items()), [posts[0]]) request = self.get_page_request(pages[1], self.user, path=posts[0].get_absolute_url()) xml = feed(request) self.assertContains(xml, posts[0].get_absolute_url()) self.assertContains(xml, 'Articoli del blog su example.com') feed = TagFeed() feed.namespace = self.app_config_1.namespace feed.config = self.app_config_1 self.assertEqual(list(feed.items('tag-2')), [posts[0]])
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_post_detail_view(self): posts = self.get_posts() pages = self.get_pages() with smart_override('en'): with switch_language(posts[0], 'en'): request = self.get_page_request(pages[1], AnonymousUser(), lang='en', edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) with self.assertRaises(Http404): view_obj.kwargs = {'slug': 'not-existing'} post_obj = view_obj.get_object() view_obj.kwargs = {'slug': posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, 'en') with smart_override('it'): with switch_language(posts[0], 'it'): request = self.get_page_request(pages[1], AnonymousUser(), lang='it', edit=False) view_obj = PostDetailView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'slug': posts[0].slug} post_obj = view_obj.get_object() self.assertEqual(post_obj, posts[0]) self.assertEqual(post_obj.language_code, 'it') view_obj.object = post_obj context = view_obj.get_context_data() self.assertEqual(context['post'], posts[0]) self.assertEqual(context['post'].language_code, 'it') self.assertTrue(context['meta'])
def aldryn_apphooks_config(context, *args, **kwargs): """ Example: {% load aldryn_apphooks_config_utils %} {% block content %} {% aldryn_apphooks_config %} Namespace: "{{ namespace }}", Config: "{{ config }}" {% endblock %} """ namespace, config = get_app_instance(context.request) context['namespace'] = namespace context['config'] = config return ''
def calendar(context, year, month, language=None, namespace=None): template_name = 'aldryn_events/includes/calendar.html' if not namespace: namespace, config = get_app_instance(context['request']) if not language: language = get_language_from_request(context['request'], check_path=True) t = get_template(template_name) try: EventsConfig.objects.get(namespace=namespace) except EventsConfig.DoesNotExist: context['namespace_error'] = ERROR_MESSAGE.format(namespace) else: context['calendar_tag'] = build_calendar_context( year, month, language, namespace) rendered = t.render(context.flatten()) return rendered
def calendar(context, year, month, language=None, namespace=None): template_name = 'aldryn_events/includes/calendar.html' if not namespace: namespace, config = get_app_instance(context['request']) if not language: language = get_language_from_request( context['request'], check_path=True) t = get_template(template_name) try: EventsConfig.objects.get(namespace=namespace) except EventsConfig.DoesNotExist: context['namespace_error'] = ERROR_MESSAGE.format(namespace) else: context['calendar_tag'] = build_calendar_context( year, month, language, namespace) rendered = t.render(context) return rendered
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) request.current_app = self.namespace if (not request.GET or any( map(lambda x: x in request.GET, ['edit_off', 'edit', 'structure' ]))) and self.namespace == DEFAULT_APP_NAMESPACE: if SHOW_INDEX_VIEW_ON_INITIAL_SEARCH: return IndexView.as_view()(request, *args, **kwargs) elif SHOW_GROUP_LIST_VIEW_ON_INITIAL_SEARCH: return GroupListView.as_view()(request, *args, **kwargs) self.request_language = get_language(request) self.request = request self.site_id = getattr(get_current_site(self.request), 'id', None) self.valid_languages = get_valid_languages(self.namespace, self.request_language, self.site_id) return super(SearchView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) language = get_language_from_request(request, check_path=True) self.queryset = (Event.objects.namespace( self.namespace).published().language(language).order_by( *ORDERING_FIELDS)) self.event = self.queryset.active_translations( language, slug=kwargs['slug']).first() if not self.event: raise Http404("Event not found") set_language_changer(request, self.event.get_absolute_url) setattr(self.request, request_events_event_identifier, self.event) if hasattr(request, 'toolbar'): request.toolbar.set_object(self.event) return super(EventDetailView, self).dispatch(request, *args, **kwargs)
def test_post_archive_view(self): posts = self.get_posts() pages = self.get_pages() with smart_override('en'): request = self.get_page_request(pages[1], AnonymousUser(), lang='en', edit=False) view_obj = PostArchiveView() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.kwargs = {'year': now().year, 'month': now().month} # One post only, anonymous request qs = view_obj.get_queryset() self.assertEqual(qs.count(), 1) self.assertEqual(list(qs), [posts[0]]) view_obj.object_list = qs context = view_obj.get_context_data(object_list=view_obj.object_list) self.assertEqual(context['archive_date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) self.request_language = get_language(request) self.queryset = ( Event.objects.namespace(self.namespace) .published() .language(self.request_language) .order_by(*ORDERING_FIELDS) ) self.event = self.queryset.active_translations( self.request_language, slug=kwargs['slug']).first() if not self.event: raise Http404("Event not found") set_language_changer(request, self.event.get_absolute_url) setattr(self.request, request_events_event_identifier, self.event) if hasattr(request, 'toolbar'): request.toolbar.set_object(self.event) return super(EventDetailView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) self.request_language = get_language(request) qs = (Event.objects.namespace(self.namespace).published().language( self.request_language)) site_id = getattr(get_current_site(request), 'id', None) valid_languages = get_valid_languages(self.namespace, self.request_language, site_id) self.queryset = qs.translated(*valid_languages).order_by( *ORDERING_FIELDS) self.event = self.queryset.active_translations( self.request_language, slug=kwargs['slug']).first() if not self.event: raise Http404("Event not found") set_language_changer(request, self.event.get_absolute_url) setattr(self.request, request_events_event_identifier, self.event) if hasattr(request, 'toolbar'): request.toolbar.set_object(self.event) return super(EventDetailView, self).dispatch(request, *args, **kwargs)
def __call__(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) self.feed_type = getattr(feedgenerator, self.config.feed_type) self.section = request.GET.get('section', None) self.category = request.GET.get('category', None) return super(RSSFeed, self).__call__(request, *args, **kwargs)
def test_modifier(self): """ Tests if correct category is selected in the menu according to context (view object) """ posts = self.get_posts() pages = self.get_pages() tests = ( # view class, view kwarg, view object, category (PostDetailView, 'slug', posts[0], posts[0].categories.first()), (CategoryEntriesView, 'category', self.cats[2], self.cats[2]) ) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE self.app_config_1.save() for view_cls, kwarg, obj, cat in tests: with smart_override('en'): with switch_language(obj, 'en'): request = self.get_page_request( pages[1], self.user, path=obj.get_absolute_url() ) cache.clear() menu_pool.clear(all=True) view_obj = view_cls() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.app_config = self.app_config_1 view_obj.kwargs = {kwarg: obj.slug} view_obj.get(request) view_obj.get_context_data() # check if selected menu node points to cat nodes = menu_pool.get_nodes(request) found = [] for node in nodes: if node.selected: found.append(node.get_absolute_url()) self.assertTrue(obj.get_absolute_url() in found) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_CATEGORIES self.app_config_1.save() for view_cls, kwarg, obj, cat in tests: with smart_override('en'): with switch_language(obj, 'en'): request = self.get_page_request( pages[1], self.user, path=obj.get_absolute_url() ) cache.clear() menu_pool.clear(all=True) view_obj = view_cls() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.app_config = self.app_config_1 view_obj.kwargs = {kwarg: obj.slug} view_obj.get(request) view_obj.get_context_data() # check if selected menu node points to cat nodes = menu_pool.get_nodes(request) found = [] for node in nodes: if node.selected: found.append(node.get_absolute_url()) self.assertTrue(cat.get_absolute_url() in found) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE self.app_config_1.save()
def __call__(self, request, *args, **kwargs): self.request = request self.namespace, self.config = get_app_instance(request) return super(LatestEntriesFeed, self).__call__(request, *args, **kwargs)
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 dispatch(self, request, *args, **kwargs): self.request = request self.namespace, self.config = get_app_instance(request) self.object = self.get_object() self.set_language_changer(self.object) return super(JobOpeningDetail, self).dispatch(request, *args, **kwargs)
def single(request): namespace, config = get_app_instance(request) poll = config.poll return HttpResponse(str(poll))
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_modifier(self): """ Tests if correct category is selected in the menu according to context (view object) """ pages = self.get_pages() posts = self.get_posts() tests = ( # view class, view kwarg, view object, category (PostDetailView, 'slug', posts[0], posts[0].categories.first()), (CategoryEntriesView, 'category', self.cats[2], self.cats[2]) ) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE self.app_config_1.save() for view_cls, kwarg, obj, cat in tests: with smart_override('en'): with switch_language(obj, 'en'): request = self.get_page_request( pages[1], self.user, path=obj.get_absolute_url() ) cache.clear() menu_pool.clear(all=True) view_obj = view_cls() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.app_config = self.app_config_1 view_obj.kwargs = {kwarg: obj.slug} view_obj.get(request) view_obj.get_context_data() # check if selected menu node points to cat nodes = menu_pool.get_nodes(request) found = [] for node in nodes: if node.selected: found.append(node.get_absolute_url()) self.assertTrue(obj.get_absolute_url() in found) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_CATEGORIES self.app_config_1.save() for view_cls, kwarg, obj, cat in tests: with smart_override('en'): with switch_language(obj, 'en'): request = self.get_page_request( pages[1], self.user, path=obj.get_absolute_url() ) cache.clear() menu_pool.clear(all=True) view_obj = view_cls() view_obj.request = request view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.app_config = self.app_config_1 view_obj.kwargs = {kwarg: obj.slug} view_obj.get(request) view_obj.get_context_data() # check if selected menu node points to cat nodes = menu_pool.get_nodes(request) found = [] for node in nodes: if node.selected: found.append(node.get_absolute_url()) self.assertTrue(cat.get_absolute_url() in found) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE self.app_config_1.save()
def __call__(self, request, *args, **kwargs): self.namespace, self.config = get_app_instance(request) return super(LatestArticlesFeed, self).__call__( request, *args, **kwargs)
def apphooks_config(request): namespace, config = get_app_instance(request) return { 'namespace': namespace, 'config': config, }