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