diff --git a/journals/helpers.py b/journals/helpers.py index d1d656c2bad92ed789800d15dbe3685f93ca4d84..6c097de27734169f18446b14b253ec9923a1059b 100644 --- a/journals/helpers.py +++ b/journals/helpers.py @@ -1,6 +1,18 @@ +import re + from .exceptions import JournalNameError, PaperNumberError +def issue_doi_label_from_doi_label(doi_label): + """ + Strip the last digits block from the label. + """ + m = re.match(r'[a-zA-Z]+.[0-9]+.[0-9]+', doi_label) + s = m.start() + e = m.end() + return doi_label[s:e] + + def journal_name_abbrev_citation(journal_name): if journal_name == 'SciPostPhys': return 'SciPost Phys.' diff --git a/journals/templates/journals/manage_metadata.html b/journals/templates/journals/manage_metadata.html index 9f9f358af1b6135ce91190236029bd215158906f..ba798601b2b540a3408a3d40f473c5d117a9477b 100644 --- a/journals/templates/journals/manage_metadata.html +++ b/journals/templates/journals/manage_metadata.html @@ -23,7 +23,18 @@ event: "focusin" <div class="row"> <div class="col-12"> - <h1 class="highlight">Manage Publications Metadata</h1> + <h1 class="highlight">Manage Publications Metadata{% if issue_doi_label %} for issue {{ issue_doi_label }}{% endif %}</h1> + {% if issue_doi_label %} + <h3>Return to the <a href="{% url 'journals:manage_metadata' %}">Main manage metadata page</a></h3> + {% endif %} + <h3>Manage metadata per issue:</h3> + <ul> + {% for issue in issues %} + <li> + <a href="{% url 'journals:manage_metadata' issue_doi_label=issue.doi_label %}">{{ issue }}</a> + </li> + {% endfor %} + </ul> </div> </div> diff --git a/journals/urls/general.py b/journals/urls/general.py index 4352f06a25ce9ec30102992ec7e99de5a4208203..648fb35f2d89db923389106052575bee397b09a5 100644 --- a/journals/urls/general.py +++ b/journals/urls/general.py @@ -41,6 +41,12 @@ urlpatterns = [ url(r'^add_new_unreg_author/(?P<publication_id>[0-9]+)$', journals_views.add_new_unreg_author, name='add_new_unreg_author'), + url(r'^manage_metadata/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + journals_views.manage_metadata, + name='manage_metadata'), + url(r'^manage_metadata/(?P<issue_doi_label>[a-zA-Z]+.[0-9]+.[0-9]+)$', + journals_views.manage_metadata, + name='manage_metadata'), url(r'^manage_metadata/$', journals_views.manage_metadata, name='manage_metadata'), diff --git a/journals/views.py b/journals/views.py index d818c435f37c56d28b2c43b74fcbb53cec0c5fdb..a6fa6cf551dbf246bd54298849ad0182d5f0f81a 100644 --- a/journals/views.py +++ b/journals/views.py @@ -16,7 +16,7 @@ from django.db import transaction from django.http import HttpResponse from .exceptions import PaperNumberingError -from .helpers import paper_nr_string +from .helpers import paper_nr_string, issue_doi_label_from_doi_label from .models import Journal, Issue, Publication, UnregisteredAuthor, Deposit, DOAJDeposit from .forms import FundingInfoForm, InitiatePublicationForm, ValidatePublicationForm,\ UnregisteredAuthorForm, CreateMetadataXMLForm, CitationListBibitemsForm @@ -271,11 +271,19 @@ def validate_publication(request): @permission_required('scipost.can_publish_accepted_submission', return_403=True) -def manage_metadata(request): - publications = Publication.objects.order_by('-publication_date', '-paper_nr') +def manage_metadata(request, issue_doi_label=None, doi_label=None): + issues = Issue.objects.all().order_by('-until_date') + publications = Publication.objects.all() + if doi_label: + issue_doi_label = issue_doi_label_from_doi_label(doi_label) + if issue_doi_label: + publications = publications.filter(in_issue__doi_label=issue_doi_label) + publications.order_by('-publication_date', '-paper_nr') associate_grant_form = GrantSelectForm() associate_generic_funder_form = FunderSelectForm() context = { + 'issues': issues, + 'issue_doi_label': issue_doi_label, 'publications': publications, 'associate_grant_form': associate_grant_form, 'associate_generic_funder_form': associate_generic_funder_form, @@ -437,7 +445,8 @@ def add_associated_grant(request, doi_label): publication.grants.add(grant_select_form.cleaned_data['grant']) publication.save() messages.success(request, 'Grant added to publication %s' % str(publication)) - return redirect(reverse('journals:manage_metadata')) + return redirect(reverse('journals:manage_metadata', + kwargs={'doi_label': publication.doi_label})) @permission_required('scipost.can_publish_accepted_submission', return_403=True)