From 7445df525021227232b7b36b2627eb57955cfc94 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Wed, 13 Sep 2017 06:34:26 +0200
Subject: [PATCH] Correct original submission date filtering in stats

---
 stats/templates/stats/statistics.html |  3 ++-
 stats/views.py                        |  8 ++++----
 submissions/managers.py               | 12 ++++++++++++
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/stats/templates/stats/statistics.html b/stats/templates/stats/statistics.html
index 52d44d1dc..afe2e4316 100644
--- a/stats/templates/stats/statistics.html
+++ b/stats/templates/stats/statistics.html
@@ -17,7 +17,8 @@
 <h1 class="highlight">Statistics</h1>
 
 <h2>Aggregate statistics</h2>
-<p>For each Journal, clicking on a year gives aggregate statistics for submissions (so including rejections). Clicking on a Journal/Volume/Issue gives aggregates for publications in this object.</p>
+<p>For each Journal, clicking on a year gives aggregate statistics for Submissions (so including rejections and withdrawals) which were first submitted in that year.</p>
+<p>Clicking on a Journal/Volume/Issue gives aggregates for all publications in that object.</p>
 <ul>
   {% for journal in journals|dictsort:"doi_label" %}
   <li><a href="{% url 'stats:statistics' journal_doi_label=journal.doi_label %}">{{ journal }}</a></li>
diff --git a/stats/views.py b/stats/views.py
index 762251209..3b3ac22ac 100644
--- a/stats/views.py
+++ b/stats/views.py
@@ -1,3 +1,5 @@
+import datetime
+
 from django.contrib.auth.decorators import login_required, permission_required
 from django.shortcuts import get_object_or_404, render
 
@@ -17,10 +19,8 @@ def statistics(request, journal_doi_label=None, volume_nr=None, issue_nr=None, y
         context['journal'] = journal
         if year:
             context['year'] = year
-            submissions = Submission.objects.filter(
-                submitted_to_journal=journal_doi_label,
-                submission_date__year=year,
-            )
+            submissions = Submission.objects.filter(submitted_to_journal=journal_doi_label
+            ).originally_submitted(datetime.date(int(year), 1, 1), datetime.date(int(year), 12, 31))
             context['submissions'] = submissions
             nr_ref_inv = 0
             nr_acc = 0
diff --git a/submissions/managers.py b/submissions/managers.py
index c3ba890ef..ca6bf98c7 100644
--- a/submissions/managers.py
+++ b/submissions/managers.py
@@ -110,6 +110,18 @@ class SubmissionQuerySet(models.QuerySet):
         return self.filter(status__in=[STATUS_ACCEPTED, STATUS_REJECTED_VISIBLE, STATUS_PUBLISHED,
                                        STATUS_RESUBMITTED, STATUS_RESUBMITTED_REJECTED_VISIBLE])
 
+    def originally_submitted(self, from_date, until_date):
+        """
+        Returns the submissions originally received between from_date and until_date
+        (including subsequent resubmissions, even if those came in later).
+        """
+        identifiers = []
+        for sub in self.filter(is_resubmission=False,
+                               submission_date__range=(from_date, until_date)):
+            identifiers.append(sub.arxiv_identifier_wo_vn_nr)
+        return self.filter(arxiv_identifier_wo_vn_nr__in=identifiers)
+
+
     def accepted(self):
         return self.filter(status=STATUS_ACCEPTED)
 
-- 
GitLab