SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 0c9b2f1a authored by Jorran de Wit's avatar Jorran de Wit
Browse files

Remove preprints from master branch

parent dd918bf6
No related branches found
No related tags found
No related merge requests found
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.contrib import admin
from .models import Preprint
admin.site.register(Preprint)
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.apps import AppConfig
class ProceedingsConfig(AppConfig):
name = 'preprints'
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.db.models import Max
from django.utils import timezone
from .models import Preprint
def generate_new_scipost_identifier():
"""Return an identifier for a new SciPost preprint series without version number."""
now = timezone.now()
existing_identifier = Preprint.objects.filter(
created__year=now.year, created__month=now.month).aggregate(
identifier=Max('scipost_preprint_identifier'))['identifier']
if not existing_identifier:
existing_identifier = '1'
else:
existing_identifier = str(existing_identifier + 1)
return '{year}{month}_{identifier}'.format(
year=now.year, month=str(now.month).rjust(2, '0'),
identifier=existing_identifier.rjust(5, '0'))
def format_scipost_identifier(self, identifier, version=1):
return 'scipost_{identifier}v{version}'.format(
identifier=identifier, version=version)
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2018-06-10 18:14
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('submissions', '0025_auto_20180520_1430'),
]
operations = [
migrations.CreateModel(
name='Preprint',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('scipost_preprint_identifier', models.PositiveIntegerField(blank=True, null=True)),
('identifier_wo_vn_nr', models.CharField(blank=True, max_length=25)),
('vn_nr', models.PositiveSmallIntegerField(default=1)),
('url', models.URLField()),
('_file', models.FileField(blank=True, max_length=200, upload_to='UPLOADS/PREPRINTS/%Y/%m/')),
('modified', models.DateTimeField(auto_now=True)),
('created', models.DateTimeField(auto_now_add=True)),
('submission', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='submissions.Submission')),
],
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2018-06-10 18:14
from __future__ import unicode_literals
from datetime import datetime
from django.db import migrations
def create_preprint_instances(apps, schema_editor):
"""Add a Preprint instance for each existing Submission."""
Preprint = apps.get_model('preprints', 'Preprint')
Submission = apps.get_model('submissions', 'Submission')
for submission in Submission.objects.all():
dt = datetime(
year=submission.submission_date.year,
month=submission.submission_date.month,
day=submission.submission_date.day)
Preprint.objects.create(
submission=submission,
identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr,
vn_nr=submission.arxiv_vn_nr,
url=submission.arxiv_link,
modifier=submission.latest_activity,
created=dt)
class Migration(migrations.Migration):
dependencies = [
('preprints', '0001_initial'),
]
operations = [
migrations.RunPython(create_preprint_instances),
]
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.core.urlresolvers import reverse
from django.db import models
from django.http import Http404
class Preprint(models.Model):
"""A link with ArXiv or standalone/SciPost-hosted preprint.
If the instance is a scipost preprint, the `_file` and `scipost_preprint_identifier` fields
should be filled. Else, these fields should be left blank.
"""
submission = models.OneToOneField('submissions.Submission')
# (ArXiv) identifiers with/without version number
# identifier_w_vn_nr = models.CharField(max_length=25, blank=True)
scipost_preprint_identifier = models.PositiveIntegerField(null=True, blank=True)
identifier_wo_vn_nr = models.CharField(max_length=25, blank=True)
vn_nr = models.PositiveSmallIntegerField(default=1)
url = models.URLField()
_file = models.FileField(upload_to='UPLOADS/PREPRINTS/%Y/%m/', max_length=200, blank=True)
# Dates
modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return 'Preprint {}'.format(self.identifier_w_vn_nr)
def get_absolute_url(self):
if self.url:
return self.url
if self._file:
return reverse('preprints:pdf', self.identifier_w_vn_nr)
raise Http404
@property
def identifier_w_vn_nr(self):
return '{}v{}'.format(self.identifier_wo_vn_nr, self.vn_nr)
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.test import TestCase
# Create your tests here.
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.preprint_pdf, name='pdf'),
]
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from .models import Preprint
def preprint_pdf(request, identifier_w_vn_nr):
"""Download the attachment of a Report if available."""
preprint = get_object_or_404(Preprint, identifier_w_vn_nr=identifier_w_vn_nr, _file__isnull=False)
response = HttpResponse(preprint._file.read(), content_type='application/pdf')
filename = '{}_preprint.pdf'.format(preprint.identifier_w_vn_nr)
response['Content-Disposition'] = ('filename=' + filename)
return response
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