SciPost Code Repository

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
views.py 1.27 KiB
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404, redirect

from submissions.helpers import check_verified_author
from submissions.models import Submission


def preprint_pdf(request, identifier_w_vn_nr):
    """Open pdf of SciPost preprint or redirect to arXiv page."""
    submission = get_object_or_404(Submission, preprint__identifier_w_vn_nr=identifier_w_vn_nr)
    preprint = submission.preprint

    if preprint.url:
        return redirect(preprint.url)

    # Check if Contributor is author of the Submission
    is_author = check_verified_author(submission, request.user)

    if not submission.visible_public and not is_author:
        if not request.user.is_authenticated:
            raise Http404
        elif not request.user.has_perm(
            'scipost.can_assign_submissions') and not submission.fellows.filter(
                contributor__user=request.user).exists():
                    raise Http404

    response = HttpResponse(preprint._file.read(), content_type='application/pdf')
    filename = '{}.pdf'.format(preprint.identifier_w_vn_nr)
    response['Content-Disposition'] = ('filename=' + filename)
    return response