From b7aa65432ad73c2549a0b82a7b25e4b3bf3643a9 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Tue, 2 Feb 2016 06:19:20 +0100
Subject: [PATCH] Start work on improving submissions

---
 .../templates/commentaries/commentaries.html  |  1 +
 submissions/forms.py                          |  2 +-
 submissions/models.py                         |  3 +-
 submissions/templates/submissions/browse.html | 54 +++++++++++++++++++
 .../templates/submissions/submissions.html    | 43 ++++++++-------
 submissions/urls.py                           |  1 +
 submissions/views.py                          | 22 ++++++++
 7 files changed, 106 insertions(+), 20 deletions(-)
 create mode 100644 submissions/templates/submissions/browse.html

diff --git a/commentaries/templates/commentaries/commentaries.html b/commentaries/templates/commentaries/commentaries.html
index adfda4542..e8edc55eb 100644
--- a/commentaries/templates/commentaries/commentaries.html
+++ b/commentaries/templates/commentaries/commentaries.html
@@ -38,6 +38,7 @@
 
   {% if commentary_search_list %}
   <br />
+  <hr class="hr12">
   <h3>Search results:</h3>
   <ul>
     {% for commentary in commentary_search_list %}
diff --git a/submissions/forms.py b/submissions/forms.py
index 07189782b..f7463f0bb 100644
--- a/submissions/forms.py
+++ b/submissions/forms.py
@@ -15,7 +15,7 @@ from ratings.models import *
 class SubmissionForm(forms.ModelForm):
     class Meta:
         model = Submission
-        fields = ['submitted_to_journal', 'domain', 'specialization', 'title', 'author_list', 'abstract', 'arxiv_link']
+        fields = ['discipline', 'submitted_to_journal', 'domain', 'specialization', 'title', 'author_list', 'abstract', 'arxiv_link']
 
     def __init__(self, *args, **kwargs):
         super(SubmissionForm, self).__init__(*args, **kwargs)
diff --git a/submissions/models.py b/submissions/models.py
index 8532d70ed..395362d43 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -4,7 +4,7 @@ from django.contrib.auth.models import User
 
 from .models import *
 
-from scipost.models import Contributor
+from scipost.models import *
 from journals.models import *
 
 
@@ -28,6 +28,7 @@ class Submission(models.Model):
     vetted = models.BooleanField(default=False)
     editor_in_charge = models.ForeignKey(Contributor, related_name="editor_in_charge", blank=True, null=True) # assigned by Journal Editor
     submitted_to_journal = models.CharField(max_length=30, choices=SCIPOST_JOURNALS_SUBMIT, verbose_name="Journal to be submitted to")
+    discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, default='physics')
     domain = models.CharField(max_length=3, choices=SCIPOST_JOURNALS_DOMAINS)
     specialization = models.CharField(max_length=1, choices=SCIPOST_JOURNALS_SPECIALIZATIONS)
     status = models.SmallIntegerField(choices=SUBMISSION_STATUS) # set by Editors
diff --git a/submissions/templates/submissions/browse.html b/submissions/templates/submissions/browse.html
new file mode 100644
index 000000000..18bd86299
--- /dev/null
+++ b/submissions/templates/submissions/browse.html
@@ -0,0 +1,54 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: Submissions{% endblock pagetitle %}
+
+{% block headsup %}
+<script type="text/javascript" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
+{% endblock headsup %}
+
+{% block bodysup %}
+
+<!-- Temporary strip for online version -->
+{% if user.is_authenticated %}
+
+<section>
+  <p id="journalsannounce">OPEN FOR SUBMISSION STARTING 1 MARCH 2016</p>
+  <br/>
+  <div class="flex-container">
+    <div class="flex-greybox320">
+      <h1>SciPost Submissions</h1>
+      <h3><a href="{% url 'submissions:submit_manuscript' %}">Submit an arXiv preprint to a SciPost Journal</a></h3>
+    </div>
+    <div class="flex-greybox320">
+      <h2>Search SciPost Submissions:</h2>
+      <form action="{% url 'submissions:submissions' %}" method="post">
+	{% csrf_token %}
+	<table>
+	  {{ form.as_table }}
+	</table>
+	<input type="submit" name="Submit" />
+      </form>
+    </div>
+    <div class="flex-greybox320">
+      <h2>View SciPost Submissions</h2>
+      <ul>
+	<li>Physics: last <a href="{% url 'submissions:browse' discipline='physics' nrweeksback=1 %}">week</a> <a href="{% url 'submissions:browse' discipline='physics' nrweeksback=4 %}">month</a> <a href="{% url 'submissions:browse' discipline='physics' nrweeksback=52 %}">year</a> </li>
+      </ul>
+    </div>
+  </div>
+
+  {% if submission_list %}
+  <br />
+  <h3>Submissions in {{ discipline }} in the last {{ nrweeksback }} weeks:</h3>
+  <ul>
+    {% for submission in submission_list %}
+    <li><a href="{% url 'submissions:submission' submission.id %}">{{ submission.title }}</a> by {{ submission.author_list }} (published {{ submission.submission_date }}) </li>
+    {% endfor %}
+  </ul>
+  {% endif %}
+
+</section>
+
+{% endif %} <!-- Temporary strip -->
+
+{% endblock bodysup %}
diff --git a/submissions/templates/submissions/submissions.html b/submissions/templates/submissions/submissions.html
index f9d5d541a..b1f48f5f9 100644
--- a/submissions/templates/submissions/submissions.html
+++ b/submissions/templates/submissions/submissions.html
@@ -8,30 +8,37 @@
 {% if user.is_authenticated %}
 
 <section>
-  <div class="flex-greybox">
-    <h1>SciPost Submissions</h1>
-  </div>
-  <br/>
-  <h3><a href="{% url 'submissions:submit_manuscript' %}">Submit an arXiv preprint to a SciPost Journal</a></h3>
-  <br/>
   <p id="journalsannounce">OPEN FOR SUBMISSION STARTING 1 MARCH 2016</p>
-</section>
-
-<section>
-  <hr class="hr12">
-  <h2>Search SciPost Submissions:</h2>
-  <form action="{% url 'submissions:submissions' %}" method="post">
-    {% csrf_token %}
-    <table>
+  <br/>
+  <div class="flex-container">
+    <div class="flex-greybox320">
+      <h1>SciPost Submissions</h1>
+      <h3><a href="{% url 'submissions:submit_manuscript' %}">Submit an arXiv preprint to a SciPost Journal</a></h3>
+    </div>
+    <div class="flex-greybox320">
+      <h2>Search SciPost Submissions:</h2>
+      <form action="{% url 'submissions:submissions' %}" method="post">
+	{% csrf_token %}
+	<table>
+	  <ul>
+	    {{ form.as_table }}
+	  </ul>
+	</table>
+	<input type="submit" name="Submit" />
+      </form>
+    </div>
+    <div class="flex-greybox320">
+      <h2>View SciPost Submissions</h2>
       <ul>
-	{{ form.as_table }}
+        <li>Physics: last <a href="{% url 'submissions:browse' discipline='physics' nrweeksback=1 %}">week</a> <a href="{% url 'submissions:browse' discipline='physics' nrweeksb\
+ack=4 %}">month</a> <a href="{% url 'submissions:browse' discipline='physics' nrweeksback=52 %}">year</a> </li>
       </ul>
-    </table>
-    <input type="submit" name="Submit" />
-  </form>
+    </div>
+  </div>
 
   {% if submission_search_list %}
   <br />
+  <hr class="hr12">
   <h3>Search results:</h3>
   <ul>
     {% for submission in submission_search_list %}
diff --git a/submissions/urls.py b/submissions/urls.py
index 7b1a94ba6..34e3d524d 100644
--- a/submissions/urls.py
+++ b/submissions/urls.py
@@ -5,6 +5,7 @@ from . import views
 urlpatterns = [
     # Submissions
     url(r'^$', views.submissions, name='submissions'),
+    url(r'^browse/(?P<discipline>[a-z]+)/(?P<nrweeksback>[0-9]+)/$', views.browse, name='browse'),
     url(r'^sub_and_ref_procedure$', views.sub_and_ref_procedure, name='sub_and_ref_procedure'),
     url(r'^submission/(?P<submission_id>[0-9]+)/$', views.submission_detail, name='submission'),
     url(r'^submit_manuscript$', views.submit_manuscript, name='submit_manuscript'),
diff --git a/submissions/views.py b/submissions/views.py
index e5b2fc923..72c343ec0 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -38,6 +38,7 @@ def submit_manuscript(request):
             submission = Submission (
                 submitted_by = submitted_by,
                 submitted_to_journal = form.cleaned_data['submitted_to_journal'],
+                discipline = form.cleaned_data['discipline'],
                 domain = form.cleaned_data['domain'],
                 specialization = form.cleaned_data['specialization'],
                 status = '0', 
@@ -109,6 +110,27 @@ def submissions(request):
     return render(request, 'submissions/submissions.html', context)
 
 
+def browse(request, discipline, nrweeksback):
+    if request.method == 'POST':
+        form = SubmissionSearchForm(request.POST)
+        if form.is_valid() and form.has_changed():
+            submission_search_list = Submission.objects.filter(
+                title__icontains=form.cleaned_data['title_keyword'],
+                author_list__icontains=form.cleaned_data['author'],
+                abstract__icontains=form.cleaned_data['abstract_keyword'],
+                vetted=True,
+                )
+            submission_search_list.order_by('-submission_date')
+        else:
+            submission_search_list = []
+        context = {'form': form, 'submission_search_list': submission_search_list }
+        return HttpResponseRedirect(request, 'submissions/submissions.html', context)
+    else:
+        form = SubmissionSearchForm()
+    submission_list = Submission.objects.filter(vetted=True, discipline=discipline, latest_activity__gte=timezone.now() + datetime.timedelta(weeks=-int(nrweeksback)))
+    context = {'form': form, 'discipline': discipline, 'nrweeksback': nrweeksback, 'submission_list': submission_list }
+    return render(request, 'submissions/browse.html', context)
+
 
 def submission_detail(request, submission_id):
     submission = get_object_or_404(Submission, pk=submission_id)
-- 
GitLab