Source code for submissions.services

__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"

from django import forms
from django.conf import settings

from .helpers import retrieve_pdf_from_arxiv
from .plagiarism import iThenticate


[docs]class iThenticateCaller: def __init__(self, submission, document_id=None): self.document_id = document_id self.submission = submission def _get_client(self): client = iThenticate.API.Client( settings.ITHENTICATE_USERNAME, settings.ITHENTICATE_PASSWORD ) if client.login(): return client self.add_error(None, "Failed to login to iThenticate.") # To do: wrong return None
[docs] def update_status(self): if not self.document_id: return False
# ...
[docs] def upload_document(self, document=None): if self.document_id: # Wrong action? return None if not document: # Expect: ArxivPDFNotFound exception document = retrieve_pdf_from_arxiv( self.submission.preprint.identifier_w_vn_nr ) client = self._get_client() if not client: return None try: plagiarism = iThenticate() data = plagiarism.upload_submission(document, self.submission) # Give feedback to the user if not data: self.add_error( None, "Updating failed. iThenticate didn't return valid data [3]" ) # To do: . wrong for msg in plagiarism.get_messages(): self.add_error(None, msg) # To do: wrong. return None except AttributeError: # To do: all wrong... if not self.fields.get("file"): # The document is invalid. self.add_error( None, ( "A valid pdf could not be found at arXiv." " Please upload the pdf manually." ), ) else: self.add_error( None, ("The uploaded file is not valid." " Please upload a valid pdf."), ) self.fields["file"] = forms.FileField() return data