diff --git a/journals/forms.py b/journals/forms.py index 44462b752ef726690395007f2765d454a0e597fa..3fbbce3edcb210b2859df6a0c579d3daf8d98e16 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 b49a3a0408821feaf3c8ddcc5ca28cb7e9dc1e94..668919333f224cee185775fc77edd28e4510821e 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 637c12a0b10145671a88bede2d81522ed7fa8da0..3107b733a88ecbcd9b41eb9dc3cc11f6dcbc8354 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 7d113b0225b642d35f0e27d2ad1c25ff980c142e..fc3c61d69d847dd2b23a96a8daaf7722bc7514bb 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 0000000000000000000000000000000000000000..5702c8deeba546e5181cbb1e9aa5c8ad9ccb35c5 --- /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 4a321612cc64e7e9d1251e854c8ddbbcdfd5b0f5..1522969e8df4a5fd4fd4940b92cd7d863b92509a 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 ee964e2cbf0634305b1200f21333ba6fcff78875..ab86477fc542331321a0f60a2f63941a75b5dd2e 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 da14da589fed0cdb9713666f5c451ad1c6263108..9ae86f9461d9c4784b9f8f2e16e89b524e7212c7 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 8590e3f2c5fa8cb378a39032676926d961805310..0f1d138df2f85c02d618f3efe118cf0691b02e78 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)