Source code for series.models

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


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


[docs]class Series(models.Model): """ Anchor for a series of thematically-related Collections. """ name = models.CharField(max_length=256, blank=True) slug = models.SlugField(unique=True, allow_unicode=True) description = models.TextField( help_text=('You can use plain text, Markdown or reStructuredText; see our ' '<a href="/markup/help/" target="_blank">markup help</a> pages.') ) image = models.ImageField(upload_to='series/images/', blank=True) class Meta: verbose_name_plural = 'series' def __str__(self): return self.name
[docs] def get_absolute_url(self): return reverse('series:series_detail', kwargs={'slug': self.slug})
[docs]class Collection(models.Model): """ A set of Publications which form a coherent whole. """ series = models.ForeignKey( 'series.Series', blank=True, null=True, on_delete=models.CASCADE ) name = models.CharField(max_length=256, blank=True) slug = models.SlugField(unique=True, allow_unicode=True) description = models.TextField( blank=True, help_text=('You can use plain text, Markdown or reStructuredText; see our ' '<a href="/markup/help/" target="_blank">markup help</a> pages.') ) event_start_date = models.DateField(null=True, blank=True) event_end_date = models.DateField(null=True, blank=True) image = models.ImageField(upload_to='series/collections/images/', blank=True) publications = models.ManyToManyField( 'journals.Publication', through='series.CollectionPublicationsTable', blank=True ) def __str__(self): return self.name
[docs] def get_absolute_url(self): return reverse('series:collection_detail', kwargs={'slug': self.slug})
[docs]class CollectionPublicationsTable(models.Model): collection = models.ForeignKey( 'series.Collection', on_delete=models.CASCADE ) publication = models.ForeignKey( 'journals.Publication', on_delete=models.CASCADE ) order = models.PositiveSmallIntegerField() class Meta: ordering = ['order',] unique_together = ['collection', 'order'] def __str__(self): return 'In Collection %s: publication %s' % ( str(self.collection), str(self.publication))