from django.db import models from django.utils.translation import gettext_lazy as _ class Notification(models.Model): title = models.CharField(max_length=255, verbose_name=_('Title')) message = models.TextField(max_length=1024, verbose_name=_('Message')) user = models.ForeignKey( "account.User", on_delete=models.CASCADE, verbose_name=_('User'), related_name='notifications' ) is_read = models.BooleanField(default=False, verbose_name=_('Is Read')) notification_type = models.CharField( max_length=50, null=True, blank=True, verbose_name=_('Notification Type') ) action = models.CharField(max_length=50, default='navigate', verbose_name=_('Action')) navigate_to = models.CharField(max_length=255, null=True, blank=True, verbose_name=_('Navigate To')) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_('Created At')) updated_at = models.DateTimeField(auto_now=True, verbose_name=_('Updated At')) class Meta: verbose_name = _('Notification') verbose_name_plural = _('Notifications') ordering = ('-created_at',) def __str__(self): return f"{self.user} - {self.title}" class NotificationTemplate(models.Model): notification_type = models.CharField(max_length=50, unique=True, verbose_name=_('Notification Type')) name = models.CharField(max_length=100, verbose_name=_('Name')) is_active = models.BooleanField(default=True, verbose_name=_('Is Active')) title = models.CharField(max_length=255, default="", verbose_name=_('Title')) body = models.TextField(max_length=1024, default="", verbose_name=_('Body')) placeholders_info = models.CharField( max_length=255, blank=True, null=True, verbose_name=_('Allowed Placeholders Description') ) class Meta: verbose_name = _('Notification Template') verbose_name_plural = _('Notification Templates') def __str__(self): return f"{self.name} ({self.notification_type})"