def setUp(self): self.overridden_zds_app = overridden_zds_app # don't build PDF to speed up the tests overridden_zds_app["content"]["build_pdf_when_published"] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" self.mas = ProfileFactory().user overridden_zds_app["member"]["bot_account"] = self.mas.username bot = Group(name=overridden_zds_app["member"]["bot_group"]) bot.save() self.external = UserFactory( username=overridden_zds_app["member"]["external_account"], password="******") self.beta_forum = ForumFactory( pk=overridden_zds_app["forum"]["beta_forum_id"], category=ForumCategoryFactory(position=1), position_in_category=1, ) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.tag = TagFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type="ARTICLE") self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode="W") self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.tags.add(self.tag) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS()
def setUp(self): # don't build PDF to speed up the tests settings.ZDS_APP['content']['build_pdf_when_published'] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' self.mas = ProfileFactory().user settings.ZDS_APP['member']['bot_account'] = self.mas.username bot = Group(name=settings.ZDS_APP['member']['bot_group']) bot.save() self.external = UserFactory( username=settings.ZDS_APP['member']['external_account'], password='******') self.beta_forum = ForumFactory( pk=settings.ZDS_APP['forum']['beta_forum_id'], category=CategoryFactory(position=1), position_in_category=1 ) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type='ARTICLE') self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode='W') self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS()
def setUp(self): self.overridden_zds_app = overridden_zds_app # don't build PDF to speed up the tests overridden_zds_app['content']['build_pdf_when_published'] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' self.mas = ProfileFactory().user overridden_zds_app['member']['bot_account'] = self.mas.username bot = Group(name=overridden_zds_app['member']['bot_group']) bot.save() self.external = UserFactory( username=overridden_zds_app['member']['external_account'], password='******') self.beta_forum = ForumFactory( pk=overridden_zds_app['forum']['beta_forum_id'], category=CategoryFactory(position=1), position_in_category=1) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type='ARTICLE') self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode='W') self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS()
# coding: utf-8 from django.conf.urls import url from zds.tutorialv2.views.views_published import ListArticles, DisplayOnlineArticle, DownloadOnlineArticle from zds.tutorialv2.feeds import LastArticlesFeedRSS, LastArticlesFeedATOM urlpatterns = [ # Flux url(r'^flux/rss/$', LastArticlesFeedRSS(), name='feed-rss'), url(r'^flux/atom/$', LastArticlesFeedATOM(), name='feed-atom'), # View url(r'^(?P<pk>\d+)/(?P<slug>.+)/$', DisplayOnlineArticle.as_view(), name='view'), # Downloads url(r'^md/(?P<pk>\d+)/(?P<slug>.+)\.md$', DownloadOnlineArticle.as_view(requested_file='md'), name='download-md'), url(r'^html/(?P<pk>\d+)/(?P<slug>.+)\.html$', DownloadOnlineArticle.as_view(requested_file='html'), name='download-html'), url(r'^pdf/(?P<pk>\d+)/(?P<slug>.+)\.pdf$', DownloadOnlineArticle.as_view(requested_file='pdf'), name='download-pdf'), url(r'^epub/(?P<pk>\d+)/(?P<slug>.+)\.epub$', DownloadOnlineArticle.as_view(requested_file='epub'), name='download-epub'), url(r'^zip/(?P<pk>\d+)/(?P<slug>.+)\.zip$',
class LastArticlesFeedRSSTest(TutorialTestMixin, TestCase): def setUp(self): self.overridden_zds_app = overridden_zds_app # don't build PDF to speed up the tests overridden_zds_app["content"]["build_pdf_when_published"] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" self.mas = ProfileFactory().user overridden_zds_app["member"]["bot_account"] = self.mas.username bot = Group(name=overridden_zds_app["member"]["bot_group"]) bot.save() self.external = UserFactory( username=overridden_zds_app["member"]["external_account"], password="******") self.beta_forum = ForumFactory( pk=overridden_zds_app["forum"]["beta_forum_id"], category=ForumCategoryFactory(position=1), position_in_category=1, ) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.tag = TagFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type="ARTICLE") self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode="W") self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.tags.add(self.tag) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS() def test_is_well_setup(self): """ Test that base parameters are Ok """ self.assertEqual(self.articlefeed.link, "/articles/") reftitle = "Articles sur {}".format( overridden_zds_app["site"]["literal_name"]) self.assertEqual(self.articlefeed.title, reftitle) refdescription = "Les derniers articles parus sur {}.".format( overridden_zds_app["site"]["literal_name"]) self.assertEqual(self.articlefeed.description, refdescription) atom = LastArticlesFeedATOM() self.assertEqual(atom.subtitle, refdescription) def test_get_items(self): """ basic test sending back the article """ ret = list(self.articlefeed.items()) self.assertEqual(ret[0].content, self.article) def test_get_pubdate(self): """ test the return value of pubdate """ ref = PublishedContent.objects.get( content__pk=self.article.pk).publication_date article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_pubdate(item=article) self.assertEqual(ret.date(), ref.date()) def test_get_title(self): """ test the return value of title """ ref = self.article.title article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_title(item=article) self.assertEqual(ret, ref) def test_get_description(self): """ test the return value of description """ ref = self.article.description article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_description(item=article) self.assertEqual(ret, ref) def test_get_author_name(self): """ test the return value of author name """ ref = self.user_author.username article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_author_name(item=article) self.assertEqual(ret, ref) def test_get_item_link(self): """ test the return value of item link """ ref = self.article.get_absolute_url_online() article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_link(item=article) self.assertEqual(ret, ref) def test_filters(self): """ Test filtering by category & tag """ subcategory2 = SubCategoryFactory() subcategory3 = SubCategoryFactory() tag2 = TagFactory() tag3 = TagFactory() # Add a new tuto & publish it article2 = PublishableContentFactory(type="ARTICLE") article2.authors.add(self.user_author) article2.licence = self.licence article2.subcategory.add(subcategory2) article2.tags.add(self.tag) article2.tags.add(tag2) article2.save() article2_draft = article2.load_version() article2.sha_public = article2.sha_draft = article2_draft.current_version article2.public_version = publish_content(article2, article2_draft, is_major_update=True) article2.save() # Default view ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [article2, self.article]) # Filter by subcategory self.articlefeed.query_params = {"subcategory": self.subcategory.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [self.article]) self.articlefeed.query_params = { "subcategory": f" {self.subcategory.slug} " } ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [self.article]) self.articlefeed.query_params = {"subcategory": subcategory2.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [article2]) self.articlefeed.query_params = {"subcategory": subcategory3.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, []) self.articlefeed.query_params = {"subcategory": "invalid"} self.assertRaises(Http404, self.articlefeed.items) # Filter by tag self.articlefeed.query_params = {"tag": self.tag.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [article2, self.article]) self.articlefeed.query_params = {"tag": tag2.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [article2]) self.articlefeed.query_params = {"tag": f" {tag2.slug} "} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, [article2]) self.articlefeed.query_params = {"tag": tag3.slug} ret = [item.content for item in self.articlefeed.items()] self.assertEqual(ret, []) self.articlefeed.query_params = {"tag": "invalid"} self.assertRaises(Http404, self.articlefeed.items)
class LastArticlesFeedRSSTest(TestCase): def setUp(self): # don't build PDF to speed up the tests settings.ZDS_APP['content']['build_pdf_when_published'] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' self.mas = ProfileFactory().user settings.ZDS_APP['member']['bot_account'] = self.mas.username bot = Group(name=settings.ZDS_APP['member']['bot_group']) bot.save() self.external = UserFactory( username=settings.ZDS_APP['member']['external_account'], password='******') self.beta_forum = ForumFactory( pk=settings.ZDS_APP['forum']['beta_forum_id'], category=CategoryFactory(position=1), position_in_category=1 ) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type='ARTICLE') self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode='W') self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS() def test_is_well_setup(self): """ Test that base parameters are Ok """ self.assertEqual(self.articlefeed.link, '/articles/') reftitle = u'Articles sur {}'.format( settings.ZDS_APP['site']['litteral_name']) self.assertEqual(self.articlefeed.title, reftitle) refdescription = u'Les derniers articles parus sur {}.'.format( settings.ZDS_APP['site']['litteral_name']) self.assertEqual(self.articlefeed.description, refdescription) atom = LastArticlesFeedATOM() self.assertEqual(atom.subtitle, refdescription) def test_get_items(self): """ basic test sending back the article """ ret = self.articlefeed.items() self.assertEqual(ret[0].content, self.article) def test_get_pubdate(self): """ test the return value of pubdate """ ref = PublishedContent.objects.get( content__pk=self.article.pk).publication_date article = self.articlefeed.items()[0] ret = self.articlefeed.item_pubdate(item=article) self.assertEqual(ret.date(), ref.date()) def test_get_title(self): """ test the return value of title """ ref = self.article.title article = self.articlefeed.items()[0] ret = self.articlefeed.item_title(item=article) self.assertEqual(ret, ref) def test_get_description(self): """ test the return value of description """ ref = self.article.description article = self.articlefeed.items()[0] ret = self.articlefeed.item_description(item=article) self.assertEqual(ret, ref) def test_get_author_name(self): """ test the return value of author name """ ref = self.user_author.username article = self.articlefeed.items()[0] ret = self.articlefeed.item_author_name(item=article) self.assertEqual(ret, ref) def test_get_item_link(self): """ test the return value of item link """ ref = self.article.get_absolute_url_online() article = self.articlefeed.items()[0] ret = self.articlefeed.item_link(item=article) self.assertEqual(ret, ref) def tearDown(self): if os.path.isdir(settings.ZDS_APP['content']['repo_private_path']): shutil.rmtree(settings.ZDS_APP['content']['repo_private_path']) if os.path.isdir(settings.ZDS_APP['content']['repo_public_path']): shutil.rmtree(settings.ZDS_APP['content']['repo_public_path']) if os.path.isdir(settings.MEDIA_ROOT): shutil.rmtree(settings.MEDIA_ROOT) # re-activate PDF build settings.ZDS_APP['content']['build_pdf_when_published'] = True
from django.urls import path, re_path from django.views.generic.base import RedirectView from zds.tutorialv2.views.contributors import ContentOfContributors from zds.tutorialv2.views.lists import TagsListView, ContentOfAuthor from zds.tutorialv2.views.download_online import DownloadOnlineArticle from zds.tutorialv2.views.display import DisplayOnlineArticle from zds.tutorialv2.feeds import LastArticlesFeedRSS, LastArticlesFeedATOM urlpatterns = [ # Flux re_path(r"^flux/rss/$", LastArticlesFeedRSS(), name="feed-rss"), re_path(r"^flux/atom/$", LastArticlesFeedATOM(), name="feed-atom"), # View re_path(r"^(?P<pk>\d+)/(?P<slug>.+)/$", DisplayOnlineArticle.as_view(), name="view"), # Downloads re_path(r"^md/(?P<pk>\d+)/(?P<slug>.+)\.md$", DownloadOnlineArticle.as_view(requested_file="md"), name="download-md"), re_path( r"^html/(?P<pk>\d+)/(?P<slug>.+)\.html$", DownloadOnlineArticle.as_view(requested_file="html"), name="download-html", ), re_path(r"^pdf/(?P<pk>\d+)/(?P<slug>.+)\.pdf$", DownloadOnlineArticle.as_view(requested_file="pdf"), name="download-pdf"), re_path(r"^tex/(?P<pk>\d+)/(?P<slug>.+)\.tex$", DownloadOnlineArticle.as_view(requested_file="tex"),
class LastArticlesFeedRSSTest(TutorialTestMixin, TestCase): def setUp(self): self.overridden_zds_app = overridden_zds_app # don't build PDF to speed up the tests overridden_zds_app['content']['build_pdf_when_published'] = False self.staff = StaffProfileFactory().user settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' self.mas = ProfileFactory().user overridden_zds_app['member']['bot_account'] = self.mas.username bot = Group(name=overridden_zds_app['member']['bot_group']) bot.save() self.external = UserFactory( username=overridden_zds_app['member']['external_account'], password='******') self.beta_forum = ForumFactory( pk=overridden_zds_app['forum']['beta_forum_id'], category=CategoryFactory(position=1), position_in_category=1) # ensure that the forum, for the beta versions, is created self.licence = LicenceFactory() self.subcategory = SubCategoryFactory() self.user_author = ProfileFactory().user self.user_staff = StaffProfileFactory().user self.user_guest = ProfileFactory().user # create an article self.article = PublishableContentFactory(type='ARTICLE') self.article.authors.add(self.user_author) UserGalleryFactory(gallery=self.article.gallery, user=self.user_author, mode='W') self.article.licence = self.licence self.article.subcategory.add(self.subcategory) self.article.save() # fill it with one extract self.article_draft = self.article.load_version() self.extract1 = ExtractFactory(container=self.article_draft, db_object=self.article) # then, publish it ! version = self.article_draft.current_version self.published = publish_content(self.article, self.article_draft, is_major_update=True) self.article.sha_public = version self.article.sha_draft = version self.article.public_version = self.published self.article.save() self.articlefeed = LastArticlesFeedRSS() def test_is_well_setup(self): """ Test that base parameters are Ok """ self.assertEqual(self.articlefeed.link, '/articles/') reftitle = 'Articles sur {}'.format(overridden_zds_app['site']['literal_name']) self.assertEqual(self.articlefeed.title, reftitle) refdescription = 'Les derniers articles parus sur {}.'.format(overridden_zds_app['site']['literal_name']) self.assertEqual(self.articlefeed.description, refdescription) atom = LastArticlesFeedATOM() self.assertEqual(atom.subtitle, refdescription) def test_get_items(self): """ basic test sending back the article """ ret = list(self.articlefeed.items()) self.assertEqual(ret[0].content, self.article) def test_get_pubdate(self): """ test the return value of pubdate """ ref = PublishedContent.objects.get(content__pk=self.article.pk).publication_date article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_pubdate(item=article) self.assertEqual(ret.date(), ref.date()) def test_get_title(self): """ test the return value of title """ ref = self.article.title article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_title(item=article) self.assertEqual(ret, ref) def test_get_description(self): """ test the return value of description """ ref = self.article.description article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_description(item=article) self.assertEqual(ret, ref) def test_get_author_name(self): """ test the return value of author name """ ref = self.user_author.username article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_author_name(item=article) self.assertEqual(ret, ref) def test_get_item_link(self): """ test the return value of item link """ ref = self.article.get_absolute_url_online() article = list(self.articlefeed.items())[0] ret = self.articlefeed.item_link(item=article) self.assertEqual(ret, ref)