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