Source code for proceedings.models

__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


from django.urls import reverse
from django.db import models
from django.utils import timezone

from scipost.behaviors import TimeStampedModel

from .managers import ProceedingsQuerySet

today = timezone.now().date()


[docs]class Proceedings(TimeStampedModel): """ A Proceeding is a special kind of Journal Issue. """ # Link to the actual Journal platform issue = models.OneToOneField( 'journals.Issue', on_delete=models.CASCADE, related_name='proceedings', limit_choices_to=models.Q(in_volume__in_journal__doi_label='SciPostPhysProc') | models.Q(in_journal__doi_label='SciPostPhysProc')) minimum_referees = models.PositiveSmallIntegerField( help_text='Require an explicit minimum number of referees for the default ref cycle.', blank=True, null=True) # Event the Proceedings is for event_name = models.CharField(max_length=256, blank=True) event_suffix = models.CharField(max_length=256, blank=True) event_description = models.TextField(blank=True) event_start_date = models.DateField(null=True, blank=True) event_end_date = models.DateField(null=True, blank=True) logo = models.ImageField(upload_to='proceedings/images/', blank=True) cover_image = models.ImageField(upload_to='proceedings/images/', blank=True) # Fellows lead_fellow = models.ForeignKey('colleges.Fellowship', null=True, blank=True, on_delete=models.SET_NULL, related_name='+') fellowships = models.ManyToManyField('colleges.Fellowship', blank=True, limit_choices_to={'guest': True}) # Submission data submissions_open = models.DateField() submissions_deadline = models.DateField() submissions_close = models.DateField() # Templates template_latex_tgz = models.FileField( verbose_name='Template (LaTeX, gzipped tarball)', help_text='Gzipped tarball of the LaTeX template package', upload_to='UPLOADS/TEMPLATES/latex/%Y/', max_length=256, blank=True) objects = ProceedingsQuerySet.as_manager() class Meta: verbose_name = 'Proceedings' verbose_name_plural = 'Proceedings' default_related_name = 'proceedings' def __str__(self): _str = self.event_name if self.event_suffix: _str += ' ({s})'.format(s=self.event_suffix) return _str
[docs] def get_absolute_url(self): return reverse('proceedings:proceedings_details', args=(self.id,))
@property def open_for_submission(self): return self.submissions_open <= today and self.submissions_close >= today