diff --git a/fet2020/documents/api.py b/fet2020/documents/api.py index 206a12af..ecba3259 100644 --- a/fet2020/documents/api.py +++ b/fet2020/documents/api.py @@ -27,15 +27,17 @@ class ep_api(): raise e self.group = None self.epc = None - + def getPadHTML(self, padID): self.get_epc() - text=self.epc.getHTML(padID=self.group["groupID"] + "$" + padID)["html"] + text = self.epc.getHTML(padID=self.group["groupID"] + "$" + padID)["html"] return text - def setPadHTML(self, padID,html): + + def setPadHTML(self, padID, html): self.get_epc() - text=self.epc.setHTML(padID=self.group["groupID"] + "$" + padID, html=html) + self.epc.setHTML(padID=self.group["groupID"] + "$" + padID, html=html) return html + def checkPadExists(self, padID=None): print(self.epc.listPads(groupID=self.group["groupID"])) if not padID: diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 0494b230..3bee2b9a 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -88,7 +88,7 @@ class MyEventForm(MyPostForm): class MyFetMeetingForm(MyEventForm): - #agenda_html = forms.CharField(widget = forms.TextInput()) + # agenda_html = forms.CharField(widget = forms.TextInput()) class Meta: model = FetMeeting diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 8da2cfe2..0304e802 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -102,16 +102,15 @@ class Post(models.Model): def agenda_html(self): if not self.agenda_key: return None - h=ep.getPadHTML(self.agenda_key) + h = ep.getPadHTML(self.agenda_key) return h @agenda_html.setter def agenda_html(self, value): request_logger.info("Accessing etherpad ...") - h=ep.setPadHTML(self.agenda_key,value) + ep.setPadHTML(self.agenda_key, value) request_logger.info("set etherpad!") return value - @property def get_tagnames(self): @@ -156,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( @@ -178,7 +170,8 @@ class Post(models.Model): class PostSerializer(serializers.HyperlinkedModelSerializer): - agenda_html=serializers.CharField() + agenda_html = serializers.CharField() + class Meta: model = Post fields = [ @@ -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'