From a906072a35c6d68c2cdb5a18341b4a8c59610ca5 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Tue, 12 Sep 2017 16:30:28 +0200
Subject: [PATCH] Polish stats

---
 stats/templates/stats/statistics.html |  6 +++---
 stats/templatetags/stats_extras.py    | 11 +++++++++--
 stats/views.py                        |  2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/stats/templates/stats/statistics.html b/stats/templates/stats/statistics.html
index 7d77e918c..ac74381c7 100644
--- a/stats/templates/stats/statistics.html
+++ b/stats/templates/stats/statistics.html
@@ -19,7 +19,7 @@
 <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>
 <ul>
-  {% for journal in journals %}
+  {% for journal in journals|dictsort:"doi_label" %}
   <li><a href="{% url 'stats:statistics' journal_doi_label=journal.doi_label %}">{{ journal }}</a></li>
   <ul>
   {% for year in journal|journal_publication_years %}
@@ -27,10 +27,10 @@
   {% endfor %}
   </ul>
   <ul>
-{% for volume in journal.volume_set.all %}
+{% for volume in journal.volume_set.all|dictsort:"number" %}
 <li><a href="{% url 'stats:statistics' journal_doi_label=journal.doi_label volume_nr=volume.number %}">{{ volume }}</a></li>
 <ul>
-  {% for issue in volume.issue_set.all %}
+  {% for issue in volume.issue_set.all|dictsort:"number" %}
   <li><a href="{% url 'stats:statistics' journal_doi_label=journal.doi_label volume_nr=volume.number issue_nr=issue.number %}">{{ issue }}</a></li>
   {% endfor %}
 </ul>
diff --git a/stats/templatetags/stats_extras.py b/stats/templatetags/stats_extras.py
index c9a12f357..9c5c6e636 100644
--- a/stats/templatetags/stats_extras.py
+++ b/stats/templatetags/stats_extras.py
@@ -13,7 +13,8 @@ register = template.Library()
 def submissions_count_distinct(submissions):
     identifiers_wo_vn_nr = []
     for submission in submissions:
-        identifiers_wo_vn_nr.append(submission.arxiv_identifier_wo_vn_nr)
+        if submission.arxiv_identifier_wo_vn_nr not in identifiers_wo_vn_nr:
+            identifiers_wo_vn_nr.append(submission.arxiv_identifier_wo_vn_nr)
     return len(identifiers_wo_vn_nr)
 
 
@@ -23,12 +24,14 @@ def journal_publication_years(journal):
     for volume in journal.volume_set.all():
         if volume.until_date.year not in years:
             years.append(volume.until_date.year)
-    return years
+    return sorted(years)
+
 
 @register.filter(name='journal_nr_publications')
 def journal_nr_publications(journal):
     return Publication.objects.filter(in_issue__in_volume__in_journal=journal).count()
 
+
 @register.filter(name='journal_avg_processing_duration')
 def journal_avg_processing_duration(journal):
     duration = Publication.objects.filter(
@@ -37,10 +40,12 @@ def journal_avg_processing_duration(journal):
     if not duration: return 0
     return duration.days + duration.seconds/86400
 
+
 @register.filter(name='volume_nr_publications')
 def volume_nr_publications(volume):
     return Publication.objects.filter(in_issue__in_volume=volume).count()
 
+
 @register.filter(name='volume_avg_processing_duration')
 def volume_avg_processing_duration(volume):
     duration = Publication.objects.filter(
@@ -49,10 +54,12 @@ def volume_avg_processing_duration(volume):
     if not duration: return 0
     return duration.days + duration.seconds/86400
 
+
 @register.filter(name='issue_nr_publications')
 def issue_nr_publications(issue):
     return Publication.objects.filter(in_issue=issue).count()
 
+
 @register.filter(name='issue_avg_processing_duration')
 def issue_avg_processing_duration(issue):
     duration = Publication.objects.filter(
diff --git a/stats/views.py b/stats/views.py
index 64a011272..c698a7984 100644
--- a/stats/views.py
+++ b/stats/views.py
@@ -18,7 +18,7 @@ def statistics(request, journal_doi_label=None, volume_nr=None, issue_nr=None, y
             context['year'] = year
             submissions = Submission.objects.filter(
                 submitted_to_journal=journal,
-                submission_date__year=year,
+                submission_date__year=int(year),
             )
             context['submissions'] = submissions
         if volume_nr:
-- 
GitLab