From 58bca82c5bcd2ae92277d72ddf2cb4c7665473c3 Mon Sep 17 00:00:00 2001 From: Diwash Date: Thu, 14 Jul 2022 15:59:18 +0545 Subject: [PATCH 1/9] make article reviews editable from admin panel --- gsoc/admin.py | 10 +++---- gsoc/forms.py | 7 +++++ .../admin/article_review_change_form.html | 26 ------------------- 3 files changed, 10 insertions(+), 33 deletions(-) delete mode 100644 gsoc/templates/admin/article_review_change_form.html diff --git a/gsoc/admin.py b/gsoc/admin.py index 914368f6..0a98207c 100644 --- a/gsoc/admin.py +++ b/gsoc/admin.py @@ -1,5 +1,6 @@ from .models import * from .forms import ( + ArticleReviewForm, UserProfileForm, UserDetailsForm, RegLinkForm, @@ -599,13 +600,11 @@ class ArticleReviewAdmin(admin.ModelAdmin): list_filter = ("last_reviewed_by", "is_reviewed") fields = ( "article", - "author", - "article_link", - "lead", "is_reviewed", "last_reviewed_by", ) - change_form_template = "admin/article_review_change_form.html" + + form = ArticleReviewForm def lead(self, obj): return obj.article.lead_in @@ -623,9 +622,6 @@ def article_link(self, obj): def has_add_permission(self, request, obj=None): return False - def has_change_permission(self, request, obj=None): - return False - admin.site.register(ArticleReview, ArticleReviewAdmin) diff --git a/gsoc/forms.py b/gsoc/forms.py index 8ddd1149..eb84de8f 100644 --- a/gsoc/forms.py +++ b/gsoc/forms.py @@ -2,6 +2,7 @@ from PIL import Image from .models import ( + ArticleReview, UserDetails, UserProfile, RegLink, @@ -79,6 +80,12 @@ class AcceptanceForm(forms.Form): reglink = forms.CharField(widget=forms.HiddenInput()) +class ArticleReviewForm(forms.ModelForm): + class Meta: + model: ArticleReview + fields = ("article", "is_reviewed", "last_reviewed_by") + + class SubOrgApplicationForm(forms.ModelForm): class Meta: model = SubOrgDetails diff --git a/gsoc/templates/admin/article_review_change_form.html b/gsoc/templates/admin/article_review_change_form.html deleted file mode 100644 index e1e55585..00000000 --- a/gsoc/templates/admin/article_review_change_form.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load static %} - -{% block extrastyle %} - {{ block.super }} - - -{% endblock %} - - -{% block submit_buttons_bottom %} - {% if not original.is_reviewed %} -
- Mark Reviewed -
- {% endif %} -{% endblock %} From 7e1d1bacf60a1b402d8dae7f2fce3c6ce8fe00ad Mon Sep 17 00:00:00 2001 From: Diwash Date: Thu, 14 Jul 2022 16:47:11 +0545 Subject: [PATCH 2/9] add view url for mark all reviewed --- gsoc/templates/aldryn_newsblog/article_list.html | 6 ++++++ gsoc/urls.py | 9 +++++++++ gsoc/views.py | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/gsoc/templates/aldryn_newsblog/article_list.html b/gsoc/templates/aldryn_newsblog/article_list.html index 3772f0a8..72cd6a66 100644 --- a/gsoc/templates/aldryn_newsblog/article_list.html +++ b/gsoc/templates/aldryn_newsblog/article_list.html @@ -7,6 +7,12 @@

{% page_attribute "page_title" %} + + {% if article_list %} + {{article_list.0}} + + + {% endif %}

diff --git a/gsoc/urls.py b/gsoc/urls.py index 57259fcd..4069def5 100644 --- a/gsoc/urls.py +++ b/gsoc/urls.py @@ -128,3 +128,12 @@ url("authorize", gsoc.views.authorize, name="auth"), url("oauth2callback", gsoc.views.oauth2callback, name="oauth2callback") ] + +# Review all articles at once +urlpatterns += [ + path( + "mark_all_reviewed/", + gsoc.views.mark_all_article_as_reviewed, + name="mark_all_reviewed" + ) +] diff --git a/gsoc/views.py b/gsoc/views.py index 6b4aa901..42833d67 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -646,3 +646,7 @@ def oauth2callback(request): token.write(credentials.to_json()) return HttpResponse("Token generated successfully!!") + +def mark_all_article_as_reviewed(request): + articles = Article.objects.filter(author=request.user) + print(articles) \ No newline at end of file From 5642d7d45e438ae511ba0bb2dd207932f5f26256 Mon Sep 17 00:00:00 2001 From: Diwash Date: Thu, 14 Jul 2022 19:11:09 +0545 Subject: [PATCH 3/9] add filter to get author --- gsoc/templates/aldryn_newsblog/article_list.html | 7 ++++--- gsoc/templatetags/app_tag.py | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gsoc/templates/aldryn_newsblog/article_list.html b/gsoc/templates/aldryn_newsblog/article_list.html index 72cd6a66..418361e7 100644 --- a/gsoc/templates/aldryn_newsblog/article_list.html +++ b/gsoc/templates/aldryn_newsblog/article_list.html @@ -1,5 +1,6 @@ {% extends "aldryn_newsblog/base.html" %} {% load i18n apphooks_config_tags cms_tags %} +{% load app_tag %} {% block meta %}{% page_attribute "page_title" %} - {% endblock %} @@ -8,11 +9,11 @@

{% page_attribute "page_title" %} - {% if article_list %} - {{article_list.0}} + + - {% endif %} +

diff --git a/gsoc/templatetags/app_tag.py b/gsoc/templatetags/app_tag.py index fc99800d..6595feb5 100644 --- a/gsoc/templatetags/app_tag.py +++ b/gsoc/templatetags/app_tag.py @@ -39,3 +39,8 @@ def time_zone(context, flag=0): return gmtTime else: return TIME_ZONE + + +@register.filter +def get_author(value): + return value[0].article From 8d1979a455adf86ed09f9c85ebccbf2b44058dd6 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 16:25:05 +0545 Subject: [PATCH 4/9] make mark all reviewed button work --- gsoc/templates/aldryn_newsblog/article_list.html | 4 ++-- gsoc/templatetags/app_tag.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gsoc/templates/aldryn_newsblog/article_list.html b/gsoc/templates/aldryn_newsblog/article_list.html index 418361e7..6b42dbb3 100644 --- a/gsoc/templates/aldryn_newsblog/article_list.html +++ b/gsoc/templates/aldryn_newsblog/article_list.html @@ -9,11 +9,11 @@

{% page_attribute "page_title" %} - + {% if request.user.is_superuser and article_list %} - + {% endif %}

diff --git a/gsoc/templatetags/app_tag.py b/gsoc/templatetags/app_tag.py index 6595feb5..268f8cb2 100644 --- a/gsoc/templatetags/app_tag.py +++ b/gsoc/templatetags/app_tag.py @@ -43,4 +43,4 @@ def time_zone(context, flag=0): @register.filter def get_author(value): - return value[0].article + return value[0].owner.id From fb6e15eab815910fa2ec76558156f07d90d80153 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 16:52:36 +0545 Subject: [PATCH 5/9] make mark all work --- gsoc/views.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/gsoc/views.py b/gsoc/views.py index 42833d67..24c1629f 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -1,5 +1,5 @@ import csv -from datetime import datetime +from datetime import date, datetime from gsoc import settings @@ -647,6 +647,20 @@ def oauth2callback(request): return HttpResponse("Token generated successfully!!") -def mark_all_article_as_reviewed(request): - articles = Article.objects.filter(author=request.user) - print(articles) \ No newline at end of file + +@decorators.login_required +@decorators.user_passes_test(is_superuser) +def mark_all_article_as_reviewed(request, author_id): + user = User.objects.get(id=author_id) + current_year = datetime.now().year + articles = Article.objects.filter( + owner=user, + publishing_date__contains=current_year + ) + for article in articles: + review = ArticleReview.objects.get( + article=article + ) + review.is_reviewed = True + review.last_reviewed_by = request.user + review.save() From 9ffeb57d663d812359a83b18a7fc5dc534ddb795 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 20:03:04 +0545 Subject: [PATCH 6/9] return HttpResponse back to previous page --- gsoc/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gsoc/views.py b/gsoc/views.py index 24c1629f..35bb8290 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -664,3 +664,5 @@ def mark_all_article_as_reviewed(request, author_id): review.is_reviewed = True review.last_reviewed_by = request.user review.save() + + return HttpResponseRedirect(request.META.get('HTTP_REFERER')) From 976ffd47f33e241804963465cff4ff89adc534a1 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 20:04:33 +0545 Subject: [PATCH 7/9] remove redundant imports --- gsoc/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gsoc/views.py b/gsoc/views.py index 35bb8290..467848d5 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -1,5 +1,5 @@ import csv -from datetime import date, datetime +from datetime import datetime from gsoc import settings From 0508d12ea5c4c0e2082dfe7261f0a4e84c589318 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 20:08:11 +0545 Subject: [PATCH 8/9] add message to confirm marking --- gsoc/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gsoc/views.py b/gsoc/views.py index 467848d5..1290622b 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -665,4 +665,5 @@ def mark_all_article_as_reviewed(request, author_id): review.last_reviewed_by = request.user review.save() + messages.success(request, "All articles marked as reviewed!") return HttpResponseRedirect(request.META.get('HTTP_REFERER')) From 6d76c941513fc63e6a7e5f54f6aeb3b35e3d3037 Mon Sep 17 00:00:00 2001 From: Diwash Date: Fri, 15 Jul 2022 20:55:56 +0545 Subject: [PATCH 9/9] handle no query exception --- gsoc/views.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gsoc/views.py b/gsoc/views.py index 1290622b..23ec6f6f 100644 --- a/gsoc/views.py +++ b/gsoc/views.py @@ -658,12 +658,16 @@ def mark_all_article_as_reviewed(request, author_id): publishing_date__contains=current_year ) for article in articles: - review = ArticleReview.objects.get( - article=article - ) - review.is_reviewed = True - review.last_reviewed_by = request.user - review.save() + try: + review = ArticleReview.objects.get( + article=article, + is_reviewed=False + ) + review.is_reviewed = True + review.last_reviewed_by = request.user + review.save() + except Exception: + pass messages.success(request, "All articles marked as reviewed!") return HttpResponseRedirect(request.META.get('HTTP_REFERER'))