diff --git a/journals/templates/journals/manage_report_metadata.html b/journals/templates/journals/manage_report_metadata.html index cd2dce24d5ebcee24ff2c2c2860dec19c8319f3e..9d491ccecc3aa31612ba24beca5503d0e33114cf 100644 --- a/journals/templates/journals/manage_report_metadata.html +++ b/journals/templates/journals/manage_report_metadata.html @@ -21,13 +21,24 @@ event: "focusin" {% block content %} + <div class="rol"> + <div class="col-12"> + {% for page in reports.paginator.page_range %} + {% if forloop.counter != 1 %} | {% endif %} + <a href="?page={{ page }}">{{ page }}</a> + {% endfor %} + </div> + </div> + <table class="table table-hover mb-5"> <thead class="thead-default"> <tr> <th>Submission</th> + <th>Associated doi</th> <th>Report nr</th> - <th>Needs doi</th> + <th>Needs own doi</th> + <th>own doi</th> <th>Latest successful Crossref deposit</th> <th>Deposit needs updating?</th> </tr> @@ -37,13 +48,15 @@ event: "focusin" {% for report in reports %} <tr data-toggle="collapse" data-parent="#accordion" href="#collapse{{ report.id }}" aria-expanded="true" aria-controls="collapse{{ report.id }}" style="cursor: pointer;"> <td>{{ report.submission.arxiv_identifier_w_vn_nr }}</td> + <td>{{ report.associated_published_doi }}</td> <td>{{ report.report_nr }}</td> <td>{{ report.needs_doi }}</td> + <td>{{ report.doi_label }}</td> <td>{{ report|latest_successful_crossref_deposit_report }}</td> <td>{{ report.doideposit_needs_updating }}</td> </tr> <tr id="collapse{{ report.id }}" class="collapse" role="tabpanel" aria-labelledby="heading{{ report.id }}" style="background-color: #fff;"> - <td colspan="5"> + <td colspan="7"> <p><a href="{{ report.submission.get_absolute_url }}">{{ report.submission.arxiv_identifier_w_vn_nr }}</a>, <a href="{{ report.get_absolute_url }}">{{ report.report_nr }}</a></p> <h2 class="ml-3">Actions</h2> @@ -89,4 +102,15 @@ event: "focusin" </tbody> </table> + +<div class="rol"> + <div class="col-12"> + {% for page in reports.paginator.page_range %} + {% if forloop.counter != 1 %} | {% endif %} + <a href="?page={{ page }}">{{ page }}</a> + {% endfor %} + </div> +</div> + + {% endblock content %} diff --git a/journals/views.py b/journals/views.py index 4194b507906cb1c1adf6397cded78c9074589492..7dce7f992d32953c48daaffb43fd07b129edaab3 100644 --- a/journals/views.py +++ b/journals/views.py @@ -9,6 +9,7 @@ import xml.etree.ElementTree as ET from django.contrib.auth.decorators import login_required from django.contrib.contenttypes.models import ContentType +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.urlresolvers import reverse from django.conf import settings from django.contrib import messages @@ -1030,6 +1031,16 @@ def manage_report_metadata(request): the metadata of Reports. """ reports = Report.objects.all() + paginator = Paginator(reports, 25) + + page = request.GET.get('page') + try: + reports = paginator.page(page) + except PageNotAnInteger: + reports = paginator.page(1) + except EmptyPage: + reports = paginator.page(paginator.num_pages) + context = { 'reports': reports, } diff --git a/submissions/models.py b/submissions/models.py index d1cb44825c61c19b4d04f94db7907121b2f086c8..479746106dee94ce76e995c54c49ad7b5ae2f11c 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -501,6 +501,21 @@ class Report(SubmissionRelatedObjectMixin, models.Model): submission__arxiv_identifier_wo_vn_nr=self.submission.arxiv_identifier_wo_vn_nr) .order_by('submission__arxiv_identifier_wo_vn_nr').last()) + + @property + def associated_published_doi(self): + """ + Check if the Report relates to a SciPost-published object. + If it is, return the doi of the published object. + """ + try: + publication = Publication.objects.get( + accepted_submission__arxiv_identifier_wo_vn_nr=self.submission.arxiv_identifier_wo_vn_nr) + except Publication.DoesNotExist: + return None + return publication.doi_string + + @property def relation_to_published(self): """ @@ -508,19 +523,20 @@ class Report(SubmissionRelatedObjectMixin, models.Model): If it is, return a dict with info on relation to the published object, based on Crossref's peer review content type. """ - publication = Publication.objects.get( - accepted_submission__arxiv_identifier_wo_vn_nr=self.submission.arxiv_identifier_wo_vn_nr) - if publication: - relation = { - 'isReviewOfDOI': publication.doi_string, - 'stage': 'pre-publication', - 'type': 'referee-report', - 'title': 'Report on ' + self.submission.arxiv_identifier_w_vn_nr, - 'contributor_role': 'reviewer', - } - return relation - - return None + try: + publication = Publication.objects.get( + accepted_submission__arxiv_identifier_wo_vn_nr=self.submission.arxiv_identifier_wo_vn_nr) + except Publication.DoesNotExist: + return None + + relation = { + 'isReviewOfDOI': publication.doi_string, + 'stage': 'pre-publication', + 'type': 'referee-report', + 'title': 'Report on ' + self.submission.arxiv_identifier_w_vn_nr, + 'contributor_role': 'reviewer', + } + return relation @property def citation(self):