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