From 7ec225b7a671bc31e309558a76e4c0776deb2036 Mon Sep 17 00:00:00 2001 From: Okhin Date: Tue, 16 Jul 2019 13:03:28 +0200 Subject: [PATCH 1/3] Adding the unpublish api call --- apps/rp/models.py | 8 ++++++++ apps/rp/tests/test_article.py | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/apps/rp/models.py b/apps/rp/models.py index 4fc45f8..4a09d66 100644 --- a/apps/rp/models.py +++ b/apps/rp/models.py @@ -204,6 +204,14 @@ class Article(models.Model): else: return self.status + @transition(field=status, source='PUBLISHED', target='DRAFT', + permission="rp.can_change_status") + def unpublish(self): + """ + Unpublish an article from the RP, and reset it back to a _DRAFT_. + """ + pass + @transition(field=status, source='NEW', target='NEW', permission="rp.can_vote") @transition(field=status, source='DRAFT', target='DRAFT', diff --git a/apps/rp/tests/test_article.py b/apps/rp/tests/test_article.py index d28086e..f6eefbd 100644 --- a/apps/rp/tests/test_article.py +++ b/apps/rp/tests/test_article.py @@ -103,6 +103,11 @@ class TestArticle(TestCase): self.article.refresh_from_db() assert self.article.title != old_title + def test_unpublish(self): + a = ArticleFactory(status='PUBLISHED') + a.unpublish() + assert a.status == 'DRAFT' + class TestArticleViews(TestCase): def setUp(self): @@ -377,3 +382,17 @@ class TestArticleApi(TestCase): r = self.client.post('/api/articles/{}/unset-priority/'.format(a.id)) assert r.status_code == 200 assert r.data['priority'] is False + + def test_api_unpublish_unauth(self): + a = ArticleFactory(status='PUBLISHED') + r = self.client.post('/api/articles/{}/unpublish/'.format(a.id)) + assert r.status_code == 401 + + def test_api_unpublish(self): + self.jedi.user_permissions.add(Permission.objects.get( + codename='can_change_status')) + self.client.force_login(self.jedi) + a = ArticleFactory(status='PUBLISHED') + r = self.client.post('/api/articles/{}/unpublish/'.format(a.id)) + assert r.status_code == 200 + assert r.data['status'] == 'DRAFT' -- GitLab From 2c13bf2217642b845f99a0a49b93270edee1342f Mon Sep 17 00:00:00 2001 From: Okhin Date: Tue, 16 Jul 2019 13:03:28 +0200 Subject: [PATCH 2/3] Adding the unpublish api call --- apps/rp/models.py | 8 ++++++++ apps/rp/tests/test_article.py | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/apps/rp/models.py b/apps/rp/models.py index 49c2842..a44f5da 100644 --- a/apps/rp/models.py +++ b/apps/rp/models.py @@ -174,6 +174,14 @@ class Article(models.Model): else: return self.status + @transition(field=status, source='PUBLISHED', target='DRAFT', + permission="rp.can_change_status") + def unpublish(self): + """ + Unpublish an article from the RP, and reset it back to a _DRAFT_. + """ + pass + @transition(field=status, source='NEW', target='NEW', permission="rp.can_vote") @transition(field=status, source='DRAFT', target='DRAFT', diff --git a/apps/rp/tests/test_article.py b/apps/rp/tests/test_article.py index 01a6199..d6f66aa 100644 --- a/apps/rp/tests/test_article.py +++ b/apps/rp/tests/test_article.py @@ -62,6 +62,11 @@ class TestArticle(TestCase): self.article.refresh_from_db() assert self.article.title != old_title + def test_unpublish(self): + a = ArticleFactory(status='PUBLISHED') + a.unpublish() + assert a.status == 'DRAFT' + class TestArticleViews(TestCase): def setUp(self): @@ -336,3 +341,17 @@ class TestArticleApi(TestCase): r = self.client.post('/api/articles/{}/unset-priority/'.format(a.id)) assert r.status_code == 200 assert r.data['priority'] is False + + def test_api_unpublish_unauth(self): + a = ArticleFactory(status='PUBLISHED') + r = self.client.post('/api/articles/{}/unpublish/'.format(a.id)) + assert r.status_code == 401 + + def test_api_unpublish(self): + self.jedi.user_permissions.add(Permission.objects.get( + codename='can_change_status')) + self.client.force_login(self.jedi) + a = ArticleFactory(status='PUBLISHED') + r = self.client.post('/api/articles/{}/unpublish/'.format(a.id)) + assert r.status_code == 200 + assert r.data['status'] == 'DRAFT' -- GitLab From 9bae6017c664b0ea50af826a03c23d3ae674b770 Mon Sep 17 00:00:00 2001 From: Okhin Date: Tue, 16 Jul 2019 15:47:18 +0200 Subject: [PATCH 3/3] Adds votes, reject, publish and unpublish buttons on article details --- apps/rp/templates/rp/article_detail.html | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/rp/templates/rp/article_detail.html b/apps/rp/templates/rp/article_detail.html index 24a1e5a..f4c7b58 100644 --- a/apps/rp/templates/rp/article_detail.html +++ b/apps/rp/templates/rp/article_detail.html @@ -28,9 +28,17 @@ {% if object.status == 'PUBLISHED' %} Edit + {% if perms.rp.can_change_status %} + UnPublish + Reject + {% endif %} {% else %} Edit - Publish + {% if perms.rp.can_change_status %} + Publish + Reject + Recover + {% endif %} {% endif %} @@ -65,6 +73,12 @@

{{object.extracts |markdown}}

+ {% if perms.rp.can_vote %} + +
+1 + -1 + + {% endif %} -- GitLab