This commit is contained in:
2020-08-29 11:49:54 +00:00
21 changed files with 256 additions and 62 deletions

View File

@@ -1,4 +1,5 @@
from django.contrib.auth.models import User
from django.core.validators import ValidationError
from django.db import models
from django.db.models import Q
from django.urls import reverse
@@ -61,7 +62,7 @@ class EventManager(models.Manager):
return super().get_queryset().filter(
Q(is_event=True)
& Q(event_start__gt=date_today)
).order_by('-public_date')
).order_by('-event_start')
class FetMeetingManager(models.Manager):
@@ -168,7 +169,8 @@ class Post(models.Model):
# TODO: Explain why this image is selected on save of the image
# Query all posts that have a slug that equals one of the tags
posts1 = Post.objects.filter(
slug__in=self.tags.names()).filter(image__isnull=False)[0:1].all()
slug__in=self.tags.names()
).filter(image__isnull=False)[0:1].all()
if len(posts1) > 0:
return posts1.get().image
@@ -190,11 +192,12 @@ class Post(models.Model):
"save the post with some defaults"
if (self.id is None) and (not self.slug):
self.slug = slugify(self.public_date.date()) + "-" + slugify(self.title)
super().save(*args, **kwargs)
self.tags.set(*re.findall(r'\#([\d\w-]+)', str(self.subtitle)),
*re.findall(r'\#([\d\w-]+)', str(self.title)))
self.tags.set(
*re.findall(r'\#([\d\w-]+)', str(self.subtitle)),
*re.findall(r'\#([\d\w-]+)', str(self.title))
)
def __str__(self):
return "Post (%s, %s): %s " % (self.slug, self.public_date.strftime("%d.%m.%Y"), self.title)
@@ -239,12 +242,24 @@ class Event(Post):
class Meta:
proxy = True
verbose_name = "Event"
verbose_name_plural = "Events"
@property
def event_start_month (self):
def event_start_month(self):
return self.event_start.strftime("%b")
@property
def event_start_day(self):
return self.event_start.strftime("%d")
def clean(self):
if self.event_end is None or self.event_start is None:
raise ValidationError(_('Das Datum des Events fehlt.'))
elif self.event_end < self.event_start:
raise ValidationError(_('Das Ende des Events liegt vor dem Beginn.'))
def save(self, *args, **kwargs):
self.is_event = True
@@ -263,6 +278,15 @@ class FetMeeting(Event):
verbose_name = "Fet Sitzung"
verbose_name_plural = "Fet Sitzungen"
def clean(self):
if self.event_start is None:
raise ValidationError(_('Das Datum des Events fehlt.'))
slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung")
if Post.objects.filter(slug=slug).count() != 0:
raise ValidationError(_('Es existiert bereits eine Sitzung mit demselben Datum.'))
def save(self, *args, **kwargs):
self.title = "Fachschaftssitzung"
self.slug = slugify(self.event_start.date()) + "-" + slugify(self.title)