diff --git a/apps/notification/models.py b/apps/notification/models.py index 5a83a598..3a703f29 100644 --- a/apps/notification/models.py +++ b/apps/notification/models.py @@ -109,10 +109,7 @@ class Subscriber(ProjectBaseMixin): ) old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None) - subscription_type = models.ForeignKey(SubscriptionType, on_delete=models.CASCADE, null=True, default=None) - - subscribe_date = models.DateTimeField(_('Last subscribe date', blank=True, null=True, default=now)) - unsubscribe_date = models.DateTimeField(_('Last unsubscribe date'), blank=True, null=True, default=None) + subscription_types = models.ManyToManyField(SubscriptionType, through='Subscribe') objects = SubscriberManager.from_queryset(SubscriberQuerySet)() @@ -130,7 +127,6 @@ class Subscriber(ProjectBaseMixin): def unsubscribe(self): """Unsubscribe user.""" - self.unsubscribe_date = now() self.state = self.UNUSABLE self.save() @@ -147,3 +143,19 @@ class Subscriber(ProjectBaseMixin): url = settings.SITE_REDIRECT_URL_UNSUBSCRIBE query = f'?code={self.update_code}' return f'{schema}://{site_domain}{url}{query}' + + +class Subscribe(ProjectBaseMixin): + """Subscribe model.""" + + subscribe_date = models.DateTimeField(_('Last subscribe date'), blank=True, null=True, default=now) + unsubscribe_date = models.DateTimeField(_('Last unsubscribe date'), blank=True, null=True, default=None) + + subscriber = models.ForeignKey(Subscriber, on_delete=models.CASCADE) + subscription_type = models.ForeignKey(SubscriptionType, on_delete=models.CASCADE) + + class Meta: + """Meta class.""" + + verbose_name = _('Subscribe') + verbose_name_plural = _('Subscribes')