From 3906fd6d908047e3f1165b81cac5c9d69b1ae11a Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Fri, 16 Feb 2018 08:18:47 +0100 Subject: [PATCH] Clean: routes, fields, templates --- journals/forms.py | 63 +++++++++++++ journals/templates/journals/add_author.html | 4 +- .../create_citation_list_metadata.html | 17 ++-- .../templates/journals/manage_metadata.html | 4 +- .../journals/metadata_doaj_create.html | 49 ++++++++++ .../journals/publication_detail.html | 4 +- journals/urls/general.py | 94 ++++++++++--------- journals/utils.py | 51 ---------- journals/views.py | 37 ++++---- 9 files changed, 196 insertions(+), 127 deletions(-) create mode 100644 journals/templates/journals/metadata_doaj_create.html diff --git a/journals/forms.py b/journals/forms.py index 44462b752..3fbbce3ed 100644 --- a/journals/forms.py +++ b/journals/forms.py @@ -83,6 +83,69 @@ class CreateMetadataXMLForm(forms.ModelForm): }) +class CreateMetadataDOAJForm(forms.ModelForm): + class Meta: + model = Publication + fields = () + + def __init__(self, *args, **kwargs): + self.request = kwargs.pop('request') + super().__init__(*args, **kwargs) + + def save(self, *args, **kwargs): + self.instance.metadata_DOAJ = self.generate(self.instance) + super().save(*args, **kwargs) + + def generate(self, publication): + md = { + 'bibjson': { + 'author': [{'name': publication.author_list}], + 'title': publication.title, + 'abstract': publication.abstract, + 'year': publication.publication_date.strftime('%Y'), + 'month': publication.publication_date.strftime('%m'), + 'start_page': publication.get_paper_nr(), + 'identifier': [ + { + 'type': 'eissn', + 'id': str(publication.in_issue.in_volume.in_journal.issn) + }, + { + 'type': 'doi', + 'id': publication.doi_string + } + ], + 'link': [ + { + 'url': self.request.build_absolute_uri(publication.get_absolute_url()), + 'type': 'fulltext', + } + ], + 'journal': { + 'publisher': 'SciPost', + 'volume': str(publication.in_issue.in_volume.number), + 'number': str(publication.in_issue.number), + 'identifier': [{ + 'type': 'eissn', + 'id': str(publication.in_issue.in_volume.in_journal.issn) + }], + 'license': [ + { + 'url': self.request.build_absolute_uri( + publication.in_issue.in_volume.in_journal.get_absolute_url()), + 'open_access': 'true', + 'type': publication.get_cc_license_display(), + 'title': publication.get_cc_license_display(), + } + ], + 'language': ['EN'], + 'title': publication.in_issue.in_volume.in_journal.get_name_display(), + } + } + } + return md + + class BaseReferenceFormSet(BaseModelFormSet): """ BaseReferenceFormSet is used to help fill the Reference list for Publications diff --git a/journals/templates/journals/add_author.html b/journals/templates/journals/add_author.html index b49a3a040..668919333 100644 --- a/journals/templates/journals/add_author.html +++ b/journals/templates/journals/add_author.html @@ -60,7 +60,7 @@ {% for contributor in contributors_found %} <li> <div class="font-weight-bold">{{ contributor.user.first_name }} {{ contributor.user.last_name }}</div> - <a href="{% url 'journals:add_author' publication_id=publication.id contributor_id=contributor.id %}">Add this Contributor as author of this Publication</a> + <a href="{% url 'journals:add_author' doi_label=publication.doi_label contributor_id=contributor.id %}">Add this Contributor as author of this Publication</a> </li> {% empty %} <li><span class="text-danger">No Contributor with this name could be identified.</span></li> @@ -68,7 +68,7 @@ </ul> <h3>You can otherwise add the author manually and link it to the publication</h3> - <form action="{% url 'journals:add_author' publication_id=publication.id %}" method="post"> + <form action="{% url 'journals:add_author' doi_label=publication.doi_label %}" method="post"> {% csrf_token %} {{ form|bootstrap }} <input class="btn btn-primary" type="submit" value="Add"> diff --git a/journals/templates/journals/create_citation_list_metadata.html b/journals/templates/journals/create_citation_list_metadata.html index 637c12a0b..3107b733a 100644 --- a/journals/templates/journals/create_citation_list_metadata.html +++ b/journals/templates/journals/create_citation_list_metadata.html @@ -7,9 +7,8 @@ <div class="container"> <nav class="breadcrumb hidden-sm-down"> <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a> - <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a> - <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a> - <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a> + <a href="{% url 'journals:manage_metadata' %}" class="breadcrumb-item">Administration</a> + <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}" class="breadcrumb-item">{{ publication.citation }}</a> <span class="breadcrumb-item active">Create citation list metadata</span> </nav> </div> @@ -22,24 +21,20 @@ <div class="row"> <div class="col-12"> - <h1 class="highlight">Create citation list metadata page</h1> + <h1 class="highlight">Create citation list metadata page for <a href="{{ publication.get_absolute_url }}">{{ publication.doi_label }}</a></h1> </div> </div> <div class="row"> <div class="col-12"> - {% if errormessage %} - <h2 class="text-danger">{{ errormessage }}</h2> - {% endif %} - <form action="{% url 'journals:create_citation_list_metadata' publication.doi_label %}" method="post"> {% csrf_token %} {{ bibitems_form|bootstrap }} - <input type="submit" class="btn btn-secondary" value="Submit"> + <input type="submit" class="btn btn-primary" value="Submit"> </form> - <hr> + <hr class="divider"> <h3>Current citation list metadata:</h3> <table> @@ -52,7 +47,7 @@ <hr> - <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3> + <p>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></p> </div> </div> diff --git a/journals/templates/journals/manage_metadata.html b/journals/templates/journals/manage_metadata.html index 7d113b022..fc3c61d69 100644 --- a/journals/templates/journals/manage_metadata.html +++ b/journals/templates/journals/manage_metadata.html @@ -78,12 +78,12 @@ event: "focusin" <ul class="list-unstyled pl-4"> {% for author in publication.authors.all %} <li> - {{ author.order }}. <a href="{% url 'journals:mark_first_author' publication_id=publication.id author_object_id=author.id %}">{{ author }}</a> + {{ author.order }}. <a href="{% url 'journals:mark_first_author' doi_label=publication.doi_label author_object_id=author.id %}">{{ author }}</a> </li> {% endfor %} </ul> </li> - <li><a href="{% url 'journals:add_author' publication.id %}">Add a missing author</a></li> + <li><a href="{% url 'journals:add_author' doi_label=publication.doi_label %}">Add a missing author</a></li> <li><a href="{% url 'journals:create_citation_list_metadata' publication.doi_label %}">Create/update citation list metadata</a></li> <li><a href="{% url 'journals:create_funding_info_metadata' publication.doi_label %}">Create/update funding info metadata</a></li> diff --git a/journals/templates/journals/metadata_doaj_create.html b/journals/templates/journals/metadata_doaj_create.html new file mode 100644 index 000000000..5702c8dee --- /dev/null +++ b/journals/templates/journals/metadata_doaj_create.html @@ -0,0 +1,49 @@ +{% extends 'scipost/base.html' %} + +{% load bootstrap %} + +{% block pagetitle %}: Produce metadata DOAJ{% endblock pagetitle %} + +{% block breadcrumb %} + <div class="container-outside header"> + <div class="container"> + <nav class="breadcrumb hidden-sm-down"> + <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a> + <a href="{% url 'journals:manage_metadata' %}" class="breadcrumb-item">Administration</a> + <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}" class="breadcrumb-item">{{ publication.citation }}</a> + <span class="breadcrumb-item active">Produce metadata DOAJ</span> + </nav> + </div> + </div> +{% endblock %} + +{% block content %} + + +<div class="row"> + <div class="col-12"> + <h1 class="highlight">Produce metadata DOAJ for <a href="{{ publication.get_absolute_url }}">{{ publication.doi_label }}</a></h1> + </div> +</div> + +<div class="row"> + <div class="col-12"> + <h3>Existing DOAJ metadata</h3> + {% if publication.metadata_DOAJ %} + <pre><code>{{ publication.metadata_DOAJ }}</code></pre> + {% else %} + <p>No existing DOAJ Metadata found.</p> + {% endif %} + + <br> + <form method="post"> + {% csrf_token %} + {{ form|bootstrap }} + <input class="btn btn-primary" type="submit" value="{% if publication.metadata_DOAJ %}Reproduce{% else %}Produce{% endif %}"> + <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}" class="ml-3 btn btn-link">Back to Admin for {{ publication.doi_label }}</a> + </form> + </div> +</div> + + +{% endblock %} diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html index 4a321612c..1522969e8 100644 --- a/journals/templates/journals/publication_detail.html +++ b/journals/templates/journals/publication_detail.html @@ -138,12 +138,12 @@ <ul class="list-unstyled pl-4"> {% for author in publication.authors.all %} <li> - {{ author.order }}. <a href="{% url 'journals:mark_first_author' publication_id=publication.id author_object_id=author.id %}">{{ author }}</a> + {{ author.order }}. <a href="{% url 'journals:mark_first_author' doi_label=publication.doi_label author_object_id=author.id %}">{{ author }}</a> </li> {% endfor %} </ul> </li> - <li><a href="{% url 'journals:add_author' publication.id %}">Add a missing author</a></li> + <li><a href="{% url 'journals:add_author' doi_label=publication.doi_label %}">Add a missing author</a></li> <li><a href="{% url 'journals:create_citation_list_metadata' publication.doi_label %}">Create/update citation list metadata</a></li> <li><a href="{% url 'journals:create_funding_info_metadata' publication.doi_label %}">Create/update funding info metadata</a></li> <li><a href="{% url 'journals:create_metadata_xml' publication.doi_label %}">Create/update the XML metadata</a></li> diff --git a/journals/urls/general.py b/journals/urls/general.py index ee964e2cb..ab86477fc 100644 --- a/journals/urls/general.py +++ b/journals/urls/general.py @@ -17,90 +17,98 @@ urlpatterns = [ name='crossmark_policy'), # Editorial and Administrative Workflow - url(r'^initiate_publication$', + url(r'^admin/initiate_publication$', journals_views.initiate_publication, name='initiate_publication'), - url(r'^validate_publication$', + url(r'^admin/validate_publication$', journals_views.validate_publication, name='validate_publication'), - url(r'^add_author/(?P<publication_id>[0-9]+)/(?P<contributor_id>[0-9]+)$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/authors/add/(?P<contributor_id>[0-9]+)$', journals_views.add_author, name='add_author'), - url(r'^add_author/(?P<publication_id>[0-9]+)$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/authors/add$', journals_views.add_author, name='add_author'), - url(r'^mark_first_author/(?P<publication_id>[0-9]+)/(?P<author_object_id>[0-9]+)$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/authors/mark_first/(?P<author_object_id>[0-9]+)$', journals_views.mark_first_author, name='mark_first_author'), - url(r'^manage_metadata/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/manage_metadata$', journals_views.manage_metadata, name='manage_metadata'), - url(r'^manage_metadata/(?P<issue_doi_label>[a-zA-Z]+.[0-9]+.[0-9]+)$', + url(r'^admin/(?P<issue_doi_label>[a-zA-Z]+.[0-9]+.[0-9]+)/manage_metadata$', journals_views.manage_metadata, name='manage_metadata'), - url(r'^manage_metadata/$', + url(r'^admin/manage_metadata/$', journals_views.manage_metadata, name='manage_metadata'), - url(r'^create_citation_list_metadata/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/create_citation_list_metadata$', journals_views.create_citation_list_metadata, name='create_citation_list_metadata'), - url(r'^update_references/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/update_references$', journals_views.update_references, name='update_references'), - url(r'^create_funding_info_metadata/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/funders/create_metadata$', journals_views.create_funding_info_metadata, name='create_funding_info_metadata'), - url(r'^add_associated_grant/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', - journals_views.add_associated_grant, - name='add_associated_grant'), - url(r'^add_generic_funder/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/funders/add_generic$', journals_views.add_generic_funder, name='add_generic_funder'), - url(r'^create_metadata_xml/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/grants/add$', + journals_views.add_associated_grant, + name='add_associated_grant'), + + # Metadata handling + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/metadata/crossref/create$', journals_views.create_metadata_xml, name='create_metadata_xml'), - url(r'^metadata_xml_deposit/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/(?P<option>[a-z]+)$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/metadata/crossref/deposit/(?P<option>[a-z]+)$', journals_views.metadata_xml_deposit, name='metadata_xml_deposit'), - url(r'^mark_deposit_success/(?P<deposit_id>[0-9]+)/(?P<success>[0-1])$', - journals_views.mark_deposit_success, - name='mark_deposit_success'), - url(r'^produce_metadata_DOAJ/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/metadata/DOAJ$', journals_views.produce_metadata_DOAJ, name='produce_metadata_DOAJ'), - url(r'^metadata_DOAJ_deposit/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/metadata/DOAJ/deposit$', journals_views.metadata_DOAJ_deposit, name='metadata_DOAJ_deposit'), - url(r'^mark_doaj_deposit_success/(?P<deposit_id>[0-9]+)/(?P<success>[0-1])$', + url(r'^admin/metadata/crossref/(?P<deposit_id>[0-9]+)/mark/(?P<success>[0-1])$', + journals_views.mark_deposit_success, + name='mark_deposit_success'), + url(r'^admin/metadata/DOAJ/(?P<deposit_id>[0-9]+)/mark/(?P<success>[0-1])$', journals_views.mark_doaj_deposit_success, name='mark_doaj_deposit_success'), - url(r'^harvest_citedby_list/$', + url(r'^admin/metadata/generic/(?P<type_of_object>[a-z]+)/(?P<object_id>[0-9]+)/metadata$', + journals_views.generic_metadata_xml_deposit, + name='generic_metadata_xml_deposit'), + url(r'^admin/metadata/generic/(?P<deposit_id>[0-9]+)/mark/(?P<success>[0-1])$', + journals_views.mark_generic_deposit_success, + name='mark_generic_deposit_success'), + url(r'^admin/generic/(?P<type_of_object>[a-z]+)/(?P<object_id>[0-9]+)/email_made_citable$', + journals_views.email_object_made_citable, + name='email_object_made_citable'), + + # Citedby + url(r'^admin/citedby/$', journals_views.harvest_citedby_list, name='harvest_citedby_list'), - url(r'^harvest_citedby_links/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', + url(r'^admin/citedby/(?P<doi_label>[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/harvest$', journals_views.harvest_citedby_links, name='harvest_citedby_links'), - url(r'^sign_existing_report/(?P<report_id>[0-9]+)$', - journals_views.sign_existing_report, - name='sign_existing_report'), - url(r'^manage_report_metadata/$', + + # Reports + url(r'^reports/$', journals_views.manage_report_metadata, name='manage_report_metadata'), - url(r'^manage_comment_metadata/$', - journals_views.manage_comment_metadata, - name='manage_comment_metadata'), - url(r'^mark_report_doi_needed/(?P<report_id>[0-9]+)/(?P<needed>[0-1])$', + url(r'^reports/(?P<report_id>[0-9]+)/sign$', + journals_views.sign_existing_report, + name='sign_existing_report'), + url(r'^reports/(?P<report_id>[0-9]+)/mark_doi_needed/(?P<needed>[0-1])$', journals_views.mark_report_doi_needed, name='mark_report_doi_needed'), - url(r'^mark_comment_doi_needed/(?P<comment_id>[0-9]+)/(?P<needed>[0-1])$', + + # Comments + url(r'^comments/$', + journals_views.manage_comment_metadata, + name='manage_comment_metadata'), + url(r'^comments/(?P<comment_id>[0-9]+)/mark_doi_needed/(?P<needed>[0-1])$', journals_views.mark_comment_doi_needed, name='mark_comment_doi_needed'), - url(r'^generic_metadata_xml_deposit/(?P<type_of_object>[a-z]+)/(?P<object_id>[0-9]+)$', - journals_views.generic_metadata_xml_deposit, - name='generic_metadata_xml_deposit'), - url(r'^mark_generic_deposit_success/(?P<deposit_id>[0-9]+)/(?P<success>[0-1])$', - journals_views.mark_generic_deposit_success, - name='mark_generic_deposit_success'), - url(r'^email_object_made_citable/(?P<type_of_object>[a-z]+)/(?P<object_id>[0-9]+)$', - journals_views.email_object_made_citable, - name='email_object_made_citable'), ] diff --git a/journals/utils.py b/journals/utils.py index da14da589..9ae86f946 100644 --- a/journals/utils.py +++ b/journals/utils.py @@ -37,57 +37,6 @@ class JournalUtils(BaseMailUtil): reply_to=['admin@scipost.org']) emailmessage.send(fail_silently=False) - @classmethod - def generate_metadata_DOAJ(cls): - """ Requires loading 'publication' attribute. """ - md = { - 'bibjson': { - 'author': [{'name': cls.publication.author_list}], - 'title': cls.publication.title, - 'abstract': cls.publication.abstract, - 'year': cls.publication.publication_date.strftime('%Y'), - 'month': cls.publication.publication_date.strftime('%m'), - 'start_page': cls.publication.get_paper_nr(), - 'identifier': [ - { - 'type': 'eissn', - 'id': str(cls.publication.in_issue.in_volume.in_journal.issn) - }, - { - 'type': 'doi', - 'id': cls.publication.doi_string - } - ], - 'link': [ - { - 'url': cls.request.build_absolute_uri(cls.publication.get_absolute_url()), - 'type': 'fulltext', - } - ], - 'journal': { - 'publisher': 'SciPost', - 'volume': str(cls.publication.in_issue.in_volume.number), - 'number': str(cls.publication.in_issue.number), - 'identifier': [{ - 'type': 'eissn', - 'id': str(cls.publication.in_issue.in_volume.in_journal.issn) - }], - 'license': [ - { - 'url': cls.request.build_absolute_uri( - cls.publication.in_issue.in_volume.in_journal.get_absolute_url()), - 'open_access': 'true', - 'type': cls.publication.get_cc_license_display(), - 'title': cls.publication.get_cc_license_display(), - } - ], - 'language': ['EN'], - 'title': cls.publication.in_issue.in_volume.in_journal.get_name_display(), - } - } - } - return md - @classmethod def email_report_made_citable(cls): """ Requires loading 'report' attribute. """ diff --git a/journals/views.py b/journals/views.py index 8590e3f2c..0f1d138df 100644 --- a/journals/views.py +++ b/journals/views.py @@ -25,7 +25,7 @@ from .models import Journal, Issue, Publication, Deposit, DOAJDeposit,\ GenericDOIDeposit, PublicationAuthorsTable from .forms import FundingInfoForm, InitiatePublicationForm, ValidatePublicationForm,\ UnregisteredAuthorForm, CreateMetadataXMLForm, CitationListBibitemsForm,\ - ReferenceFormSet + ReferenceFormSet, CreateMetadataDOAJForm from .utils import JournalUtils from comments.models import Comment @@ -353,14 +353,14 @@ def mark_first_author(request, publication_id, author_object_id): @permission_required('scipost.can_publish_accepted_submission', return_403=True) @transaction.atomic -def add_author(request, publication_id, contributor_id=None, unregistered_author_id=None): +def add_author(request, doi_label, contributor_id=None, unregistered_author_id=None): """ If not all authors are registered Contributors or if they have not all claimed authorship, this method allows editorial administrators to associated them to the publication. This is important for the Crossref metadata, in which all authors must appear. """ - publication = get_object_or_404(Publication, id=publication_id) + publication = get_object_or_404(Publication, doi_label=doi_label) if contributor_id: contributor = get_object_or_404(Contributor, id=contributor_id) PublicationAuthorsTable.objects.create(contributor=contributor, publication=publication) @@ -384,7 +384,6 @@ def add_author(request, publication_id, contributor_id=None, unregistered_author kwargs={'doi_label': publication.doi_label})) elif form.is_valid(): contributors_found = Contributor.objects.filter( - # user__first_name__icontains=form.cleaned_data['first_name'], user__last_name__icontains=form.cleaned_data['last_name']) context = { 'publication': publication, @@ -403,12 +402,13 @@ def create_citation_list_metadata(request, doi_label): in the metadata field in a Publication instance. """ publication = get_object_or_404(Publication, doi_label=doi_label) - if request.method == 'POST': - bibitems_form = CitationListBibitemsForm(request.POST, request.FILES) - if bibitems_form.is_valid(): - publication.metadata['citation_list'] = bibitems_form.extract_dois() - publication.save() - bibitems_form = CitationListBibitemsForm() + bibitems_form = CitationListBibitemsForm(request.POST or None, request.FILES or None) + if bibitems_form.is_valid(): + publication.metadata['citation_list'] = bibitems_form.extract_dois() + publication.save() + messages.success(request, 'Updated citation list') + return redirect(reverse('journals:create_citation_list_metadata', + kwargs={'doi_label': publication.doi_label})) context = { 'publication': publication, 'bibitems_form': bibitems_form, @@ -792,12 +792,17 @@ def mark_deposit_success(request, deposit_id, success): @permission_required('scipost.can_publish_accepted_submission', return_403=True) def produce_metadata_DOAJ(request, doi_label): publication = get_object_or_404(Publication, doi_label=doi_label) - JournalUtils.load({'request': request, 'publication': publication}) - publication.metadata_DOAJ = JournalUtils.generate_metadata_DOAJ() - publication.save() - messages.success(request, '<h3>%s</h3>Successfully produced metadata DOAJ.' - % publication.doi_label) - return redirect(reverse('journals:manage_metadata')) + form = CreateMetadataDOAJForm(request.POST or None, instance=publication, request=request) + if form.is_valid(): + form.save() + messages.success(request, '<h3>%s</h3>Successfully produced metadata DOAJ.' + % publication.doi_label) + return redirect(reverse('journals:manage_metadata')) + context = { + 'publication': publication, + 'form': form + } + return render(request, 'journals/metadata_doaj_create.html', context) @permission_required('scipost.can_publish_accepted_submission', return_403=True) -- GitLab