SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 2cf493d6 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Work on medatata, functional with http server

parent 328ed257
No related branches found
No related tags found
No related merge requests found
{% extends 'scipost/base.html' %} {% extends 'scipost/base.html' %}
{% block pagetitle %}: Test metadata XML deposit{% endblock pagetitle %} {% block pagetitle %}: metadata XML deposit{% endblock pagetitle %}
{% block bodysup %} {% block bodysup %}
<section> <section>
<div class="flex-greybox"> <div class="flex-greybox">
<h1>Test metadata deposit</h1> <h1>Metadata deposit</h1>
</div> </div>
{% if option=='test' %}
<h2>(using the test server)</h2>
{% elif option=='deposit' %}
<h2>(real deposit to Crossref)</h2>
{% endif %}
{% if errormessage %} {% if errormessage %}
<h2 style="color: red;">{{ errormessage }}</h2> <h2 style="color: red;">{{ errormessage }}</h2>
{% endif %} {% endif %}
...@@ -20,7 +26,7 @@ ...@@ -20,7 +26,7 @@
<h3>Response text:</h3> <h3>Response text:</h3>
<p>{{ response_text|linebreaks }}</p> <p>{{ response_text|linebreaks }}</p>
<h3>Once you're happy, you can <a href="{% url 'scipost:publication_detail' doi_string=publication.doi_string %}">return to the publication's page</a></h3> <h3><a href="{% url 'scipost:publication_detail' doi_string=publication.doi_string %}">return to the publication's page</a></h3>
</section> </section>
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
<li><a href="{% url 'journals:create_citation_list_metadata' doi_string=publication.doi_string%}">Create/update citation list metadata</a></li> <li><a href="{% url 'journals:create_citation_list_metadata' doi_string=publication.doi_string%}">Create/update citation list metadata</a></li>
<li><a href="{% url 'journals:create_funding_info_metadata' doi_string=publication.doi_string%}">Create/update funding info metadata</a></li> <li><a href="{% url 'journals:create_funding_info_metadata' doi_string=publication.doi_string%}">Create/update funding info metadata</a></li>
<li><a href="{% url 'journals:create_metadata_xml' doi_string=publication.doi_string %}">Create/update the XML metadata</a></li> <li><a href="{% url 'journals:create_metadata_xml' doi_string=publication.doi_string %}">Create/update the XML metadata</a></li>
<li><a href="{% url 'journals:test_metadata_xml_deposit' doi_string=publication.doi_string %}">Test metadata deposit (via Crossref test server)</a></li> <li><a href="{% url 'journals:metadata_xml_deposit' doi_string=publication.doi_string option='test' %}">Test metadata deposit (via Crossref test server)</a></li>
<li><a href="{% url 'journals:metadata_xml_deposit' doi_string=publication.doi_string option='deposit' %}">Deposit the metadata to Crossref</a></li>
</ul> </ul>
{% endif %} {% endif %}
......
...@@ -54,7 +54,10 @@ urlpatterns = [ ...@@ -54,7 +54,10 @@ urlpatterns = [
url(r'^create_metadata_xml/(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', url(r'^create_metadata_xml/(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$',
journals_views.create_metadata_xml, journals_views.create_metadata_xml,
name='create_metadata_xml'), name='create_metadata_xml'),
url(r'^test_metadata_xml_deposit/(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', # url(r'^test_metadata_xml_deposit/(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$',
journals_views.test_metadata_xml_deposit, # journals_views.test_metadata_xml_deposit,
name='test_metadata_xml_deposit'), # name='test_metadata_xml_deposit'),
url(r'^metadata_xml_deposit/(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})/(?P<option>[a-z]+)$',
journals_views.metadata_xml_deposit,
name='metadata_xml_deposit'),
] ]
...@@ -467,8 +467,8 @@ def create_metadata_xml(request, doi_string): ...@@ -467,8 +467,8 @@ def create_metadata_xml(request, doi_string):
'<surname>' + author.user.last_name + '</surname> ' '<surname>' + author.user.last_name + '</surname> '
) )
if author.orcid_id: if author.orcid_id:
#publication.metadata_xml += '<ORCID>http://orcid.org' + author.orcid_id + '</ORCID>\n' #publication.metadata_xml += '<ORCID>http://orcid.org' + author.orcid_id + '</ORCID>'
initial['metadata_xml'] += '<ORCID>http://orcid.org/' + author.orcid_id + '</ORCID>\n' initial['metadata_xml'] += '<ORCID>http://orcid.org/' + author.orcid_id + '</ORCID>'
initial['metadata_xml'] += '</person_name>\n' initial['metadata_xml'] += '</person_name>\n'
#publication.metadata_xml += '</contributors>\n' #publication.metadata_xml += '</contributors>\n'
...@@ -526,39 +526,75 @@ def create_metadata_xml(request, doi_string): ...@@ -526,39 +526,75 @@ def create_metadata_xml(request, doi_string):
return render(request, 'journals/create_metadata_xml.html', context) return render(request, 'journals/create_metadata_xml.html', context)
# @permission_required('scipost.can_publish_accepted_submission', return_403=True)
# @transaction.atomic
# def test_metadata_xml_deposit(request, doi_string):
# """
# Prior to the actual Crossref metadata deposit,
# test the metadata_xml using the Crossref test server.
# Makes use of the python requests module.
# """
# publication = get_object_or_404 (Publication, doi_string=doi_string)
# url = 'http://test.crossref.org/servlet/deposit'
# #headers = {'Content-type': 'multipart/form-data'}
# params = {'operation': 'doMDUpload',
# 'login_id': settings.CROSSREF_LOGIN_ID,
# 'login_passwd': settings.CROSSREF_LOGIN_PASSWORD,
# }
# #files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data', {'Expires': '0'})}
# files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data')}
# r = requests.post(url,
# params=params,
# files=files,
# #verify=settings.CERTFILE,
# #verify=False,
# )
# #s = requests.Session()
# #s.mount('https://', MyAdapter())
# #r = s.post(url, params=params, files=files)
# response_headers = r.headers
# response_text = r.text
# context = {'publication': publication,
# 'response_headers': response_headers,
# 'response_text': response_text,
# }
# return render(request, 'journals/test_metadata_xml_deposit.html', context)
@permission_required('scipost.can_publish_accepted_submission', return_403=True) @permission_required('scipost.can_publish_accepted_submission', return_403=True)
@transaction.atomic @transaction.atomic
def test_metadata_xml_deposit(request, doi_string): def metadata_xml_deposit(request, doi_string, option='test'):
""" """
Prior to the actual Crossref metadata deposit, Crossref metadata deposit.
test the metadata_xml using the Crossref test server. If test==True, test the metadata_xml using the Crossref test server.
Makes use of the python requests module. Makes use of the python requests module.
""" """
publication = get_object_or_404 (Publication, doi_string=doi_string) publication = get_object_or_404 (Publication, doi_string=doi_string)
url = 'http://test.crossref.org/servlet/deposit' if option=='deposit':
#headers = {'Content-type': 'multipart/form-data'} url = 'http://doi.crossref.org/servlet/deposit'
elif option=='test':
url = 'http://test.crossref.org/servlet/deposit'
else:
{'errormessage': 'metadata_xml_deposit can only be called with options test or deposit',}
return render(request, 'scipost/error.html', context={'errormessage': errormessage})
params = {'operation': 'doMDUpload', params = {'operation': 'doMDUpload',
'login_id': settings.CROSSREF_LOGIN_ID, 'login_id': settings.CROSSREF_LOGIN_ID,
'login_passwd': settings.CROSSREF_LOGIN_PASSWORD, 'login_passwd': settings.CROSSREF_LOGIN_PASSWORD,
} }
#files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data', {'Expires': '0'})}
files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data')} files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data')}
r = requests.post(url, r = requests.post(url,
params=params, params=params,
files=files, files=files,
#verify=settings.CERTFILE,
#verify=False,
) )
#s = requests.Session()
#s.mount('https://', MyAdapter())
#r = s.post(url, params=params, files=files)
response_headers = r.headers response_headers = r.headers
response_text = r.text response_text = r.text
context = {'publication': publication, context = {'option': option,
'publication': publication,
'response_headers': response_headers, 'response_headers': response_headers,
'response_text': response_text, 'response_text': response_text,
} }
return render(request, 'journals/test_metadata_xml_deposit.html', context) return render(request, 'journals/metadata_xml_deposit.html', context)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment