From a2e6a4754e0e21da85b8e0a5165302482f2d45d3 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 26 Jul 2022 22:22:25 +0300 Subject: [PATCH] Remove duplicate code --- webapp/models.py | 80 +++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/webapp/models.py b/webapp/models.py index 5716544..97ac62a 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -53,39 +53,44 @@ class BaseFeed(models.Model): content = models.TextField() image = models.ImageField(blank=True, null=True) + webhookUrl = "" + hookType = "" + previousVisible = False + + def __init__(self, *args, **kwargs): + super(BaseFeed, self).__init__(*args, **kwargs) + self.previousVisible = self.visible + + def __str__(self): + delete_str = _("Deleted: ") if self.deleted else "" + return _("{}{}: {}").format(delete_str, self._meta.verbose_name, self.title) + + def save(self, force_insert=False, force_update=False, *args, **kwargs): + created = self.pk is None + super(BaseFeed, self).save(force_insert, force_update, *args, **kwargs) + + if self.visible and (created or not self.previousVisible): + self.refresh_from_db() # Fetch so we can use primary key + url = f"{self.webhookUrl}/{self.pk}" + processHooks( + message=generateMessage( + f"Uusi {self._meta.verbose_name}", self.title, self.description, url + ), + eventType=self.hookType, + ) + self.previousVisible = self.visible + class Feed(BaseFeed): """Model representing feed.""" - __previousVisible = False + webhookUrl = f"https://{FRONTEND_URL}/feed" + hookType = "feed" class Meta: verbose_name = _("Feed") verbose_name_plural = _("Feeds") - def __str__(self): - delete_str = _("Deleted: ") if self.deleted else "" - return _("{}Feed: {}").format(delete_str, self.title) - - def __init__(self, *args, **kwargs): - super(Feed, self).__init__(*args, **kwargs) - self.__previousVisible = self.visible - - def save(self, force_insert=False, force_update=False, *args, **kwargs): - created = self.pk is None - super(Feed, self).save(force_insert, force_update, *args, **kwargs) - - if self.visible and (created or not self.__previousVisible): - self.refresh_from_db() # Fetch so we can use primary key - url = f"https://{FRONTEND_URL}/feed/{self.pk}" - processHooks( - message=generateMessage( - "Uusi uutinen", self.title, self.description, url - ), - eventType="feed", - ) - self.__previousVisible = self.visible - class Event(BaseFeed): """Model for event in guild calendar""" @@ -94,35 +99,14 @@ class Event(BaseFeed): end_time = models.DateTimeField(default=timezone.now) location = models.CharField(max_length=255, blank=True) signupForm = models.ManyToManyField("SignupForm", blank=True, related_name="event") - __previousVisible = False + + webhookUrl = f"https://{FRONTEND_URL}/events" + hookType = "event" class Meta: verbose_name = _("Event") verbose_name_plural = _("Events") - def __str__(self): - delete_str = _("Deleted: ") if self.deleted else "" - return _("{}Event: {}").format(delete_str, self.title) - - def __init__(self, *args, **kwargs): - super(Event, self).__init__(*args, **kwargs) - self.__previousVisible = self.visible - - def save(self, force_insert=False, force_update=False, *args, **kwargs): - created = self.pk is None - super(Event, self).save(force_insert, force_update, *args, **kwargs) - - if self.visible and (created or not self.__previousVisible): - self.refresh_from_db() # Fetch so we can use primary key - url = f"https://{FRONTEND_URL}/events/{self.pk}" - processHooks( - message=generateMessage( - "Uusi tapahtuma", self.title, self.description, url - ), - eventType="event", - ) - self.__previousVisible = self.visible - class TemplateQuestion(models.Model): """