From 18ec0f3634d151dbebd6fc8fb736a8f7e5229092 Mon Sep 17 00:00:00 2001 From: Geert Kapteijns <ghkapteijns@gmail.com> Date: Mon, 30 Jan 2017 15:23:43 +0100 Subject: [PATCH] Change Thesis Link vetting Work in progress. All unvetted theses are now listed at theses/unvetted_thesislinks. Vetting editors click on a thesis link to vet, and are redirected to theses/vet_thesislink/<id>, where they can change fields of a thesis link. theses/vet_thesislink/<id> is now a regular update view. It does not have mail capacity, or refusal reasons, etc. I will work on that next. --- .../theses/unvetted_thesislinks.html | 26 ++++++++ theses/templates/theses/vet_thesislink.html | 16 +++++ theses/urls.py | 14 +++-- theses/views.py | 59 ++++++++++++++----- 4 files changed, 95 insertions(+), 20 deletions(-) create mode 100644 theses/templates/theses/unvetted_thesislinks.html create mode 100644 theses/templates/theses/vet_thesislink.html diff --git a/theses/templates/theses/unvetted_thesislinks.html b/theses/templates/theses/unvetted_thesislinks.html new file mode 100644 index 000000000..f2245e0a6 --- /dev/null +++ b/theses/templates/theses/unvetted_thesislinks.html @@ -0,0 +1,26 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Unvetted Thesis Links{% endblock pagetitle %} + +{% block headsup %} + +{% endblock headsup %} + +{% block bodysup %} + + +<h1>Unvetted Thesis Links</h1> +<ul> + {% for thesislink in thesislinks %} + <li> + {{ thesislink.author }} - {{ thesislink.title }} - + <a href = "{% url 'theses:vet_thesislink' pk=thesislink.id %}">vet</a> + </li> + {% empty %} + <li> + No unvetted thesis links. + </li> + {% endfor %} +</ul> + +{% endblock bodysup %} diff --git a/theses/templates/theses/vet_thesislink.html b/theses/templates/theses/vet_thesislink.html new file mode 100644 index 000000000..3694c92f0 --- /dev/null +++ b/theses/templates/theses/vet_thesislink.html @@ -0,0 +1,16 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Unvetted Thesis Links{% endblock pagetitle %} + +{% block headsup %} + +{% endblock headsup %} + +{% block bodysup %} + +<form action="" method="post">{% csrf_token %} + {{ form.as_p }} + <input type="submit" value="Update" /> +</form> + +{% endblock bodysup %} diff --git a/theses/urls.py b/theses/urls.py index 9789d311e..2842d2b36 100644 --- a/theses/urls.py +++ b/theses/urls.py @@ -9,10 +9,12 @@ urlpatterns = [ url(r'^browse/(?P<discipline>[a-z]+)/(?P<nrweeksback>[0-9]+)/$', views.browse, name='browse'), url(r'^(?P<thesislink_id>[0-9]+)/$', views.thesis_detail, name='thesis'), url(r'^request_thesislink$', views.RequestThesisLink.as_view(), name='request_thesislink'), - url(r'^vet_thesislink_requests$', views.VetThesisLinkRequests.as_view(), - name='vet_thesislink_requests'), - url(r'^vet_thesislink_request/(?P<thesislink_id>[0-9]+)/$', - views.VetThesisLinkRequests.as_view(), name='vet_thesislink_request'), - url(r'^vet_thesislink_request_ack/(?P<thesislink_id>[0-9]+)$', - views.vet_thesislink_request_ack, name='vet_thesislink_request_ack'), + url(r'^unvetted_thesislinks$', views.UnvettedThesisLinks.as_view(), name='unvetted_thesislinks'), + url(r'^vet_thesislink/(?P<pk>[0-9]+)/$', views.VetThesisLink.as_view(), name='vet_thesislink') + # url(r'^vet_thesislink_requests$', views.VetThesisLinkRequests.as_view(), + # name='vet_thesislink_requests'), + # url(r'^vet_thesislink_request/(?P<thesislink_id>[0-9]+)/$', + # views.VetThesisLinkRequests.as_view(), name='vet_thesislink_request'), + # url(r'^vet_thesislink_request_ack/(?P<thesislink_id>[0-9]+)$', + # views.vet_thesislink_request_ack, name='vet_thesislink_request_ack'), ] diff --git a/theses/views.py b/theses/views.py index 56306507d..f10b16656 100644 --- a/theses/views.py +++ b/theses/views.py @@ -11,7 +11,8 @@ from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponse, HttpResponseRedirect from django.views.decorators.csrf import csrf_protect from django.db.models import Avg -from django.views.generic.edit import CreateView, FormView +from django.views.generic.edit import CreateView, FormView, UpdateView +from django.views.generic.list import ListView from django.utils.decorators import method_decorator from .models import * @@ -44,21 +45,51 @@ class RequestThesisLink(CreateView): @method_decorator(permission_required( 'scipost.can_vet_thesislink_requests', raise_exception=True), name='dispatch') -class VetThesisLinkRequests(FormView): - form_class = VetThesisLinkForm - template_name = 'theses/vet_thesislink_requests.html' - success_url = reverse_lazy('theses:vet_thesislink_requests') +class UnvettedThesisLinks(ListView): + model = ThesisLink + template_name = 'theses/unvetted_thesislinks.html' + context_object_name = 'thesislinks' + queryset = ThesisLink.objects.filter(vetted=False) - def get_context_data(self, **kwargs): - context = super(VetThesisLinkRequests, self).get_context_data(**kwargs) - context['thesislink_to_vet'] = ThesisLink.objects.filter(vetted=False).first() - return context +@method_decorator(permission_required( + 'scipost.can_vet_thesislink_requests', raise_exception=True), name='dispatch') +class VetThesisLink(UpdateView): + model = ThesisLink + fields = ['type', 'discipline', 'domain', 'subject_area', + 'title', 'author', 'supervisor', 'institution', + 'defense_date', 'pub_link', 'abstract'] + template_name = "theses/vet_thesislink.html" - def form_valid(self, form): - form.vet_request(self.kwargs['thesislink_id']) - messages.add_message(self.request, messages.SUCCESS, - strings.acknowledge_vet_thesis_link) - return super(VetThesisLinkRequests, self).form_valid(form) +# @method_decorator(permission_required( +# 'scipost.can_vet_thesislink_requests', raise_exception=True), name='dispatch') +# class VetThesisLink(UpdateView): +# form_class = VetThesisLinkForm +# template_name = "theses/vet_thesislink.html" +# success_url = reverse_lazy('theses:unvetted_thesislinks') +# +# def form_valid(self, form): + + + + + +# @method_decorator(permission_required( +# 'scipost.can_vet_thesislink_requests', raise_exception=True), name='dispatch') +# class VetThesisLinkRequests(FormView): +# form_class = VetThesisLinkForm +# template_name = 'theses/vet_thesislink_requests.html' +# success_url = reverse_lazy('theses:vet_thesislink_requests') +# +# def get_context_data(self, **kwargs): +# context = super(VetThesisLinkRequests, self).get_context_data(**kwargs) +# context['thesislink_to_vet'] = ThesisLink.objects.filter(vetted=False).first() +# return context +# +# def form_valid(self, form): +# form.vet_request(self.kwargs['thesislink_id']) +# messages.add_message(self.request, messages.SUCCESS, +# strings.acknowledge_vet_thesis_link) +# return super(VetThesisLinkRequests, self).form_valid(form) @permission_required('scipost.can_vet_thesislink_requests', raise_exception=True) -- GitLab