diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 87963362..0304e802 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -155,16 +155,9 @@ class Post(models.Model): if not self.public_date: self.public_date = timezone.now() - if (self.id is None) and (not self.slug): + if not self.slug: self.slug = slugify(self.public_date.date()) + "-" + slugify(self.title) - if self.has_agenda: - self.agenda_key = ep.createPadifNotExists(self.slug + "-agenda") - - if self.has_protocol: - self.protocol_key = ep.createPadifNotExists(self.slug + "-protocol") - request_logger.info(self.post_type) - super().save(*args, **kwargs) self.tags.set( @@ -255,31 +248,54 @@ class FetMeeting(Event): verbose_name = "Fet Sitzung" verbose_name_plural = "Fet Sitzungen" + def __get_slug(self): + self.slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung") + + if Post.objects.filter(slug=self.slug).exists(): + if Post.objects.get(slug=self.slug).id != self.id: + raise ValidationError( + _('Es existiert bereits eine Sitzung mit demselben Datum.') + ) + + def __get_agenda_key(self): + try: + self.agenda_key = ep.createPadifNotExists(self.slug + "-agenda") + except Exception as e: + raise ValidationError( + _('Die Agenda konnte nicht erstellt werden. Error: %(error)s'), + params={'error': str(e)}, + ) + + def __get_protocol_key(self): + try: + self.protocol_key = ep.createPadifNotExists(self.slug + "-protocol") + except Exception as e: + raise ValidationError( + _('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'), + params={'error': str(e)}, + ) + def clean(self): if self.event_start is None: raise ValidationError(_('Das Datum des Events fehlt.')) elif (self.event_end) and (self.event_end < self.event_start): raise ValidationError(_('Das Ende des Events liegt vor dem Beginn.')) - slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung") + if not self.slug: + self.__get_slug() - if Post.objects.filter(slug=slug).exists(): - if Post.objects.get(slug=slug).id != self.id: - raise ValidationError(_('Es existiert bereits eine Sitzung mit demselben Datum.')) + if self.has_agenda: + self.__get_agenda_key() + + if self.has_protocol: + self.__get_protocol_key() def save(self, *args, **kwargs): self.title = "Fachschaftssitzung" - if not self.slug: - self.slug = slugify(self.event_start.date()) + "-" + slugify(self.title) - self.body = "TODO: Agenda + Protokoll Link" # TODO # self.image - # TODO - # self.protocol_key - # self.agenda_key - if not self.post_type: self.post_type = 'F'