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