* feat: added new issue subscriber table * dev: notification model * feat: added CRUD operation for issue subscriber * Revert "feat: added CRUD operation for issue subscriber" This reverts commit b22e0625768f0b096b5898936ace76d6882b0736. * feat: added CRUD operation for issue subscriber * dev: notification models and operations * dev: remove delete endpoint response data * dev: notification endpoints and fix bg worker for saving notifications * feat: added list and unsubscribe function in issue subscriber * dev: filter by snoozed and response update for list and permissions * dev: update issue notifications * dev: notification segregation * dev: update notifications * dev: notification filtering * dev: add issue name in notifications * dev: notification new endpoints --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# Django imports
|
|
from django.db import models
|
|
|
|
# Third party imports
|
|
from .base import BaseModel
|
|
|
|
|
|
class Notification(BaseModel):
|
|
workspace = models.ForeignKey(
|
|
"db.Workspace", related_name="notifications", on_delete=models.CASCADE
|
|
)
|
|
project = models.ForeignKey(
|
|
"db.Project", related_name="notifications", on_delete=models.CASCADE, null=True
|
|
)
|
|
data = models.JSONField(null=True)
|
|
entity_identifier = models.UUIDField(null=True)
|
|
entity_name = models.CharField(max_length=255)
|
|
title = models.TextField()
|
|
message = models.JSONField(null=True)
|
|
message_html = models.TextField(blank=True, default="<p></p>")
|
|
message_stripped = models.TextField(blank=True, null=True)
|
|
sender = models.CharField(max_length=255)
|
|
triggered_by = models.ForeignKey("db.User", related_name="triggered_notifications", on_delete=models.SET_NULL, null=True)
|
|
receiver = models.ForeignKey("db.User", related_name="received_notifications", on_delete=models.CASCADE)
|
|
read_at = models.DateTimeField(null=True)
|
|
snoozed_till = models.DateTimeField(null=True)
|
|
archived_at = models.DateTimeField(null=True)
|
|
|
|
class Meta:
|
|
verbose_name = "Notification"
|
|
verbose_name_plural = "Notifications"
|
|
db_table = "notifications"
|
|
ordering = ("-created_at",)
|
|
|
|
def __str__(self):
|
|
"""Return name of the notifications"""
|
|
return f"{self.receiver.email} <{self.workspace.name}>"
|