diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 4cab3d7f..46a96eff 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -1,9 +1,10 @@ from django.contrib.auth.models import User from django.db import models from django.db.models import Q -from django.utils.text import slugify -from django.utils import timezone from django.urls import reverse +from django.utils import timezone +from django.utils.text import slugify +from django.utils.translation import gettext_lazy as _ from taggit.managers import TaggableManager @@ -32,7 +33,7 @@ class ArticleManager(models.Manager): regular fet meetings should not be contained in the news stream """ def get_queryset(self): - return super().get_queryset().filter(~Q(is_fetsitzung=True)) + return super().get_queryset().filter(Q(news_type='E') | Q(news_type='N')) class NewsManager(models.Manager): def get_queryset(self): @@ -44,11 +45,12 @@ class EventManager(models.Manager): regular fet meetings should not be contained in the news stream """ def get_queryset(self): - return super().get_queryset().filter(Q(is_event=True) & Q(is_fetsitzung=False)) + return super().get_queryset().filter(Q(is_event=True) & Q(news_type='E')) class FetMeetingManager(models.Manager): def get_queryset(self): - return super().get_queryset().filter(Q(is_fetsitzung=True)) + return super().get_queryset().filter(Q(news_type='F')) + ########## # MODELS # @@ -93,7 +95,13 @@ class Post(models.Model): imported_from = models.CharField(max_length=200, null=True, blank=True) - is_fetsitzung = models.BooleanField(default=False) + __choices = [ + ('N', _('News')), + ('E', _('Event')), + ('F', _('FetMeeting')) + ] + news_type = models.CharField(max_length=1, choices=__choices, default='N', editable=False) + is_event = models.BooleanField(default=False) # Zusatz Info wenn ein Event gepostet wird @@ -149,7 +157,7 @@ class Post(models.Model): @property def url(self): - return reverse('posts.show', kwargs={"id":self.slug}) + return reverse('posts.show', kwargs={"id": self.slug}) def save(self, *args, **kwargs): "save the post with some defaults" @@ -182,37 +190,41 @@ class PostSerializer(serializers.HyperlinkedModelSerializer): ] class News(Post): + objects = NewsManager() + class Meta: proxy = True verbose_name = "News" verbose_name_plural = "News" - - objects = NewsManager() - + def save(self, *args, **kwargs): + self.news_type = 'N' + super().save(*args, **kwargs) class Event(Post): + objects = EventManager() + class Meta: proxy = True - - objects = EventManager() - + def save(self, *args, **kwargs): self.is_event = True + if self.news_type == 'N': + self.news_type = 'E' super().save(*args, **kwargs) class FetMeeting(Event): + objects = FetMeetingManager() + class Meta: proxy = True verbose_name = "Fet Sitzung" verbose_name_plural = "Fet Sitzungen" - objects = FetMeetingManager() - def save(self, *args, **kwargs): self.title = "Fachschaftssitzung" self.slug = slugify(self.event_start.date()) + "-" + slugify(self.title) @@ -228,7 +240,8 @@ class FetMeeting(Event): # self.protocol_key # self.agenda_key - self.is_fetsitzung = True + if self.news_type == 'N': + self.news_type = 'F' if not self.event_place: self.event_place = "FET" @@ -237,4 +250,4 @@ class FetMeeting(Event): if not self.event_end: self.event_end = self.event_start + timedelta(hours=2) - super().save(*args, **kwargs) + super().save(*args, **kwargs) \ No newline at end of file