From 7ec225b7a671bc31e309558a76e4c0776deb2036 Mon Sep 17 00:00:00 2001 From: Okhin Date: Tue, 16 Jul 2019 13:03:28 +0200 Subject: [PATCH] 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