From cad2fa4c400eeb61fc041187e368e17ac327c6a1 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Fri, 7 Jul 2017 23:28:23 +0200 Subject: [PATCH] Add doi to Report --- submissions/managers.py | 26 ++++++++++++++----- .../migrations/0048_merge_20170707_1857.py | 16 ++++++++++++ .../0049_submission_pdf_refereeing_pack.py | 20 ++++++++++++++ .../migrations/0050_auto_20170707_2126.py | 24 +++++++++++++++++ submissions/models.py | 10 +++++++ 5 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 submissions/migrations/0048_merge_20170707_1857.py create mode 100644 submissions/migrations/0049_submission_pdf_refereeing_pack.py create mode 100644 submissions/migrations/0050_auto_20170707_2126.py diff --git a/submissions/managers.py b/submissions/managers.py index 7e8a148b3..7487d2f91 100644 --- a/submissions/managers.py +++ b/submissions/managers.py @@ -4,8 +4,8 @@ from django.db.models import Q from .constants import SUBMISSION_STATUS_OUT_OF_POOL, SUBMISSION_STATUS_PUBLICLY_UNLISTED,\ SUBMISSION_STATUS_PUBLICLY_INVISIBLE, STATUS_UNVETTED, STATUS_VETTED,\ STATUS_UNCLEAR, STATUS_INCORRECT, STATUS_NOT_USEFUL, STATUS_NOT_ACADEMIC,\ - SUBMISSION_HTTP404_ON_EDITORIAL_PAGE, STATUS_DRAFT,\ - SUBMISSION_EXCLUDE_FROM_REPORTING + SUBMISSION_HTTP404_ON_EDITORIAL_PAGE, STATUS_DRAFT, STATUS_PUBLISHED,\ + SUBMISSION_EXCLUDE_FROM_REPORTING, STATUS_REJECTED_VISIBLE, STATUS_ACCEPTED class SubmissionManager(models.Manager): @@ -57,6 +57,13 @@ class SubmissionManager(models.Manager): .order_by('-submission_date')) def public(self): + """ + This query contains set of public submissions, i.e. also containing + submissions with status "published" or "resubmitted". + """ + return self.exclude(status__in=SUBMISSION_STATUS_PUBLICLY_INVISIBLE) + + def public_unlisted(self): """ List only all public submissions. Should be used as a default filter! @@ -66,13 +73,12 @@ class SubmissionManager(models.Manager): """ return self.exclude(status__in=SUBMISSION_STATUS_PUBLICLY_UNLISTED) - def public_overcomplete(self): + def public_newest(self): """ - This query contains an overcomplete set of public submissions, i.e. also containing - submissions with status "published" or "resubmitted". + This query contains set of public() submissions, filtered to only the newest available + version. """ - queryset = self.exclude(status__in=SUBMISSION_STATUS_PUBLICLY_INVISIBLE) - return self._newest_version_only(queryset) + return self._newest_version_only(self.public()) def open_for_reporting(self): """ @@ -81,6 +87,12 @@ class SubmissionManager(models.Manager): """ return self.exclude(status__in=SUBMISSION_EXCLUDE_FROM_REPORTING) + def treated(self): + """ + This query returns all Submissions that are expected to be 'done'. + """ + return self.filter(status__in=[STATUS_ACCEPTED, STATUS_REJECTED_VISIBLE, STATUS_PUBLISHED]) + class EditorialAssignmentManager(models.Manager): def get_for_user_in_pool(self, user): diff --git a/submissions/migrations/0048_merge_20170707_1857.py b/submissions/migrations/0048_merge_20170707_1857.py new file mode 100644 index 000000000..e0b38b3d8 --- /dev/null +++ b/submissions/migrations/0048_merge_20170707_1857.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-07-07 16:57 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0047_auto_20170625_1331'), + ('submissions', '0047_submission_acceptance_date'), + ] + + operations = [ + ] diff --git a/submissions/migrations/0049_submission_pdf_refereeing_pack.py b/submissions/migrations/0049_submission_pdf_refereeing_pack.py new file mode 100644 index 000000000..32166d197 --- /dev/null +++ b/submissions/migrations/0049_submission_pdf_refereeing_pack.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-07-07 16:59 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0048_merge_20170707_1857'), + ] + + operations = [ + migrations.AddField( + model_name='submission', + name='pdf_refereeing_pack', + field=models.FileField(blank=True, max_length=200, upload_to='UPLOADS/REFEREE/%Y/%m/'), + ), + ] diff --git a/submissions/migrations/0050_auto_20170707_2126.py b/submissions/migrations/0050_auto_20170707_2126.py new file mode 100644 index 000000000..6a454b3e1 --- /dev/null +++ b/submissions/migrations/0050_auto_20170707_2126.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-07-07 19:26 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0049_submission_pdf_refereeing_pack'), + ] + + operations = [ + migrations.AlterModelOptions( + name='report', + options={'ordering': ['report_nr']}, + ), + migrations.AddField( + model_name='report', + name='doi_label', + field=models.CharField(blank=True, max_length=200), + ), + ] diff --git a/submissions/models.py b/submissions/models.py index 6dc55f8d0..b3c04de08 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -75,6 +75,9 @@ class Submission(ArxivCallable, models.Model): arxiv_vn_nr = models.PositiveSmallIntegerField(default=1) arxiv_link = models.URLField(verbose_name='arXiv link (including version nr)') + pdf_refereeing_pack = models.FileField(upload_to='UPLOADS/REFEREE/%Y/%m/', + max_length=200, blank=True) + # Metadata metadata = JSONField(default={}, blank=True, null=True) submission_date = models.DateField(verbose_name='submission date', default=datetime.date.today) @@ -272,6 +275,7 @@ class Report(models.Model): recommendation = models.SmallIntegerField(choices=REPORT_REC) remarks_for_editors = models.TextField(default='', blank=True, verbose_name='optional remarks for the Editors only') + doi_label = models.CharField(max_length=200, blank=True) anonymous = models.BooleanField(default=True, verbose_name='Publish anonymously') pdf_report = models.FileField(upload_to='UPLOADS/REPORTS/%Y/%m/', max_length=200, blank=True) @@ -279,6 +283,7 @@ class Report(models.Model): class Meta: unique_together = ('submission', 'report_nr') + ordering = ['report_nr'] def __str__(self): return (self.author.user.first_name + ' ' + self.author.user.last_name + ' on ' + @@ -287,6 +292,11 @@ class Report(models.Model): def get_absolute_url(self): return self.submission.get_absolute_url() + '#report_' + str(self.report_nr) + @property + def doi_string(self): + if self.doi_label: + return '10.21468/' + self.doi_label + def save(self, *args, **kwargs): # Control Report count per Submission. if not self.report_nr: -- GitLab