From fca5044d1ddc16a51e0b607e96f4535c3f4ae5d9 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Tue, 12 Sep 2017 15:32:26 +0200
Subject: [PATCH] Add missing files to last commit

---
 SciPost_v1/settings/base.py                   |  1 +
 SciPost_v1/urls.py                            |  2 +-
 scipost/templates/scipost/personal_page.html  |  2 +-
 .../templates/submissions/statistics.html     | 78 -------------------
 .../templatetags/submissions_extras.py        | 55 -------------
 submissions/urls.py                           |  8 --
 submissions/views.py                          | 27 -------
 7 files changed, 3 insertions(+), 170 deletions(-)
 delete mode 100644 submissions/templates/submissions/statistics.html

diff --git a/SciPost_v1/settings/base.py b/SciPost_v1/settings/base.py
index f3a4ed8e5..e8f29b0f4 100644
--- a/SciPost_v1/settings/base.py
+++ b/SciPost_v1/settings/base.py
@@ -97,6 +97,7 @@ INSTALLED_APPS = (
     'production',
     'partners',
     'funders',
+    'stats',
     'webpack_loader',
 )
 
diff --git a/SciPost_v1/urls.py b/SciPost_v1/urls.py
index fc2b471e0..9b7e8331c 100644
--- a/SciPost_v1/urls.py
+++ b/SciPost_v1/urls.py
@@ -43,7 +43,7 @@ urlpatterns = [
     url(r'^news/', include('news.urls', namespace="news")),
     url(r'^production/', include('production.urls', namespace="production")),
     url(r'^partners/', include('partners.urls', namespace="partners")),
-
+    url(r'^stats/', include('stats.urls', namespace="stats")),
     # Keep temporarily for historical reasons
     url(r'^supporting_partners/', include('partners.urls', namespace="_partners")),
 ]
diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html
index ae21f5239..0ff78b8ee 100644
--- a/scipost/templates/scipost/personal_page.html
+++ b/scipost/templates/scipost/personal_page.html
@@ -322,7 +322,7 @@
 			<h3>Refereeing overview</h3>
 			<ul>
 			  <li>View (and act on) outstanding refereeing invitations in the <a href="{% url 'submissions:refereeing_overview' %}">refereeing overview</a></li>
-			  <li><a href="{% url 'submissions:statistics' %}">View statistics</a> for submissions, refereeing, publishing</li>
+			  <li><a href="{% url 'stats:statistics' %}">View statistics</a> for submissions, refereeing, publishing</li>
 			</ul>
                         <h3>Voting</h3>
                         <ul>
diff --git a/submissions/templates/submissions/statistics.html b/submissions/templates/submissions/statistics.html
deleted file mode 100644
index 99e80d53c..000000000
--- a/submissions/templates/submissions/statistics.html
+++ /dev/null
@@ -1,78 +0,0 @@
-{% extends 'submissions/_pool_base.html' %}
-
-{% block pagetitle %}: statistics for submisisons{% endblock pagetitle %}
-
-{% load scipost_extras %}
-{% load submissions_extras %}
-
-{% load bootstrap %}
-
-{% block breadcrumb_items %}
-    {{block.super}}
-    <span class="breadcrumb-item">Statistics</span>
-{% endblock %}
-
-{% block content %}
-
-<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>
-<ul>
-  {% for journal in journals %}
-  <li><a href="{% url 'submissions:statistics' journal_doi_label=journal.doi_label %}">{{ journal }}</a></li>
-  <ul>
-  {% for year in journal|journal_publication_years %}
-  <li><a href="{% url 'submissions:statistics' journal_doi_label=journal.doi_label year=year %}">{{ year }}</a></li>
-  {% endfor %}
-  </ul>
-  <ul>
-{% for volume in journal.volume_set.all %}
-<li><a href="{% url 'submissions:statistics' journal_doi_label=journal.doi_label volume_nr=volume.number %}">{{ volume }}</a></li>
-<ul>
-  {% for issue in volume.issue_set.all %}
-  <li><a href="{% url 'submissions:statistics' journal_doi_label=journal.doi_label volume_nr=volume.number issue_nr=issue.number %}">{{ issue }}</a></li>
-  {% endfor %}
-</ul>
-{% endfor %}
-  </ul>
-  {% endfor %}
-</ul>
-
-{% if journal %}
-    <h2>Results:</h2>
-    <table class="table">
-      <tr>
-    	<th>DOI label</th>
-    	{% if year %}
-    	<th>Year</th>
-    	<th>Nr submissions</th>
-    	<th>Nr distinct submissions</th>
-    	{% endif %}
-    	<th>Nr publications</th>
-    	<th>Duration average</th>
-          </tr>
-          <tr>
-    	{% if issue %}
-    	<td>{{ issue.doi_label }}</td>
-    	<td>{{ issue|issue_nr_publications }}</td>
-    	<td>{{ issue|issue_avg_processing_duration|floatformat:2 }} days</td>
-    	{% elif volume %}
-    	<td>{{ volume.doi_label }}</td>
-    	<td>{{ volume|volume_nr_publications }}</td>
-    	<td>{{ volume|volume_avg_processing_duration|floatformat:2 }} days</td>
-    	{% else %}
-    	<td>{{ journal.doi_label }}</td>
-    	{% if year %}
-    	<td>{{ year }}</td>
-    	<td>{{ submissions|length }}</td>
-    	<td>{{ submissions|submissions_count_distinct }}</td>
-    	{% endif %}
-    	<td>{{ journal|journal_nr_publications }}</td>
-    	<td>{{ journal|journal_avg_processing_duration|floatformat:2 }} days</td>
-    	{% endif %}
-      </tr>
-    </table>
-{% endif %}
-
-{% endblock content %}
diff --git a/submissions/templatetags/submissions_extras.py b/submissions/templatetags/submissions_extras.py
index 07250669e..de71caafb 100644
--- a/submissions/templatetags/submissions_extras.py
+++ b/submissions/templatetags/submissions_extras.py
@@ -1,10 +1,7 @@
 import datetime
 
 from django import template
-from django.db.models import Avg, F
-from django.utils import timezone
 
-from journals.models import Publication
 from submissions.constants import SUBMISSION_STATUS_OUT_OF_POOL
 from submissions.models import Submission
 
@@ -26,55 +23,3 @@ def is_viewable_by_authors(recommendation):
     return recommendation.submission.status in ['revision_requested', 'resubmitted',
                                                 'accepted', 'rejected',
                                                 'published', 'withdrawn']
-
-@register.filter(name='submissions_count_distinct')
-def submissions_count_distinct(submissions):
-    identifiers_wo_vn_nr = []
-    for submission in submissions:
-        identifiers_wo_vn_nr.append(submission.arxiv_identifier_wo_vn_nr)
-    return len(identifiers_wo_vn_nr)
-
-
-@register.filter(name='journal_publication_years')
-def journal_publication_years(journal):
-    years = []
-    for volume in journal.volume_set.all():
-        if volume.until_date.year not in years:
-            years.append(volume.until_date.year)
-    return 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(
-        in_issue__in_volume__in_journal=journal).aggregate(
-            avg=Avg(F('publication_date') - F('submission_date')))['avg']
-    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(
-        in_issue__in_volume=volume).aggregate(
-            avg=Avg(F('publication_date') - F('submission_date')))['avg']
-    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(
-        in_issue=issue).aggregate(
-            avg=Avg(F('publication_date') - F('submission_date')))['avg']
-    if not duration: return 0
-    return duration.days + duration.seconds/86400
diff --git a/submissions/urls.py b/submissions/urls.py
index 20de6bfc1..c1f46c9ab 100644
--- a/submissions/urls.py
+++ b/submissions/urls.py
@@ -89,14 +89,6 @@ urlpatterns = [
     url(r'^close_refereeing_round/{regex}$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
         views.close_refereeing_round, name='close_refereeing_round'),
     url(r'^refereeing_overview$', views.refereeing_overview, name='refereeing_overview'),
-    url(r'^statistics/(?P<journal_doi_label>[a-zA-Z]+)/(?P<volume_nr>[0-9]+)/(?P<issue_nr>[0-9]+)$',
-        views.statistics, name='statistics'),
-    url(r'^statistics/(?P<journal_doi_label>[a-zA-Z]+)/(?P<volume_nr>[0-9]+)$',
-        views.statistics, name='statistics'),
-    url(r'^statistics/(?P<journal_doi_label>[a-zA-Z]+)$', views.statistics, name='statistics'),
-    url(r'^statistics/(?P<journal_doi_label>[a-zA-Z]+)/year/(?P<year>[0-9]{4,})$',
-        views.statistics, name='statistics'),
-    url(r'^statistics$', views.statistics, name='statistics'),
     url(r'^communication/{regex}/(?P<comtype>[a-zA-Z]{{4,}})$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
         views.communication, name='communication'),
     url(r'^communication/{regex}/(?P<comtype>[a-zA-Z]{{4,}})/(?P<referee_id>[0-9]+)$'.format(regex=SUBMISSIONS_COMPLETE_REGEX),
diff --git a/submissions/views.py b/submissions/views.py
index 82ccebd9d..7f5345134 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -35,7 +35,6 @@ from .forms import SubmissionIdentifierForm, RequestSubmissionForm, SubmissionSe
 from .utils import SubmissionUtils
 
 from mails.views import MailEditingSubView
-from journals.models import Journal, Volume, Issue, Publication
 from scipost.forms import ModifyPersonalMessageForm, RemarkForm
 from scipost.models import Contributor, Remark, RegistrationInvitation
 from scipost.utils import Utils
@@ -1003,32 +1002,6 @@ def refereeing_overview(request):
     return render(request, 'submissions/refereeing_overview.html', context)
 
 
-@permission_required('scipost.can_oversee_refereeing', raise_exception=True)
-def statistics(request, journal_doi_label=None, volume_nr=None, issue_nr=None, year=None):
-    journals = Journal.objects.all()
-    context = {
-        'journals': journals,
-    }
-    if journal_doi_label:
-        journal = get_object_or_404(Journal, doi_label=journal_doi_label)
-        context['journal'] = journal
-        if year:
-            context['year'] = year
-            submissions = Submission.objects.filter(
-                submitted_to_journal=journal,
-                submission_date__year=year,
-            )
-            context['submissions'] = submissions
-        if volume_nr:
-            volume = get_object_or_404(Volume, in_journal=journal,
-                                       number=volume_nr)
-            context['volume'] = volume
-            if issue_nr:
-                issue = get_object_or_404(Issue, in_volume=volume,
-                                          number=issue_nr)
-                context['issue'] = issue
-    return render(request, 'submissions/statistics.html', context)
-
 @login_required
 def communication(request, arxiv_identifier_w_vn_nr, comtype, referee_id=None):
     """
-- 
GitLab