diff --git a/stats/templates/stats/statistics.html b/stats/templates/stats/statistics.html index 7d77e918c80fbfb2e9fe6372258c75919b0c8870..ac74381c7a69bce30ad7e30fd6838de7c283205b 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 c9a12f357305de504c323dc4c556b5cf9079ecd8..9c5c6e636f86716021b322f4c66afe2090b2a294 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 64a0112721c1aea93a9f2b1b428a421af0a2b05b..c698a79844ef77a55394583ec9d8e29b87ebbe7c 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: