Compare commits

...

1 Commits

Author SHA1 Message Date
NarayanBavisetti
6c321d2ef1 chore: migration for user notification preference 2024-10-16 16:56:27 +05:30
5 changed files with 171 additions and 13 deletions

View File

@@ -372,11 +372,11 @@ class UserNotificationPreferenceEndpoint(BaseAPIView):
# request the object
def get(self, request):
user_notification_preference = UserNotificationPreference.objects.get(
user=request.user
user_notification_preference = (
UserNotificationPreference.objects.filter(user=request.user)
)
serializer = UserNotificationPreferenceSerializer(
user_notification_preference
user_notification_preference, many=True
)
return Response(serializer.data, status=status.HTTP_200_OK)

View File

@@ -0,0 +1,130 @@
# Generated by Django 4.2.15 on 2024-10-16 10:56
from django.db import migrations, models
def create_in_app_user_notification_preference(apps, schema_editor):
UserNotificationPreferences = apps.get_model(
"db", "UserNotificationPreference"
)
UserNotificationPreferences.objects.bulk_create(
[
UserNotificationPreferences(
user_id=user_notification_preference,
type="IN_APP",
property_change=True,
state_change=True,
comment=True,
mention=True,
issue_completed=True,
priority_change=True,
assignee_change=True,
start_target_date_change=True,
module_change=True,
cycle_change=True,
reactions=True,
)
for user_notification_preference in UserNotificationPreferences.objects.values_list(
"user_id", flat=True
)
],
batch_size=2000,
)
class Migration(migrations.Migration):
dependencies = [
("db", "0081_remove_globalview_created_by_and_more"),
]
operations = [
migrations.AddField(
model_name="deployboard",
name="is_disabled",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="assignee_change",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="cycle_change",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="module_change",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="priority_change",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="reactions",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="start_target_date_change",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="usernotificationpreference",
name="type",
field=models.CharField(
choices=[("EMAIL", "Email"), ("IN_APP", "In App")],
default="EMAIL",
max_length=30,
),
),
migrations.AlterField(
model_name="deployboard",
name="entity_name",
field=models.CharField(
choices=[
("project", "Project"),
("issue", "Issue"),
("module", "Module"),
("cycle", "Task"),
("page", "Page"),
("view", "View"),
("inbox", "Inbox"),
],
max_length=30,
),
),
migrations.AlterField(
model_name="usernotificationpreference",
name="comment",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="usernotificationpreference",
name="issue_completed",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="usernotificationpreference",
name="mention",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="usernotificationpreference",
name="property_change",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="usernotificationpreference",
name="state_change",
field=models.BooleanField(default=False),
),
migrations.RunPython(create_in_app_user_notification_preference),
]

View File

@@ -20,6 +20,7 @@ class DeployBoard(WorkspaceBaseModel):
("cycle", "Task"),
("page", "Page"),
("view", "View"),
("inbox", "Inbox"),
)
entity_identifier = models.UUIDField(null=True)
@@ -41,6 +42,7 @@ class DeployBoard(WorkspaceBaseModel):
is_votes_enabled = models.BooleanField(default=False)
view_props = models.JSONField(default=dict)
is_activity_enabled = models.BooleanField(default=True)
is_disabled = models.BooleanField(default=False)
def __str__(self):
"""Return name of the deploy board"""

View File

@@ -6,6 +6,10 @@ from django.db import models
from .base import BaseModel
class PreferenceTypeEnum(models.TextChoices):
EMAIL = "EMAIL", "Email"
IN_APP = "IN_APP", "In App"
class Notification(BaseModel):
workspace = models.ForeignKey(
@@ -89,13 +93,24 @@ class UserNotificationPreference(BaseModel):
related_name="project_notification_preferences",
null=True,
)
type = models.CharField(
max_length=30,
choices=PreferenceTypeEnum.choices,
default=PreferenceTypeEnum.EMAIL,
)
# preference fields
property_change = models.BooleanField(default=True)
state_change = models.BooleanField(default=True)
comment = models.BooleanField(default=True)
mention = models.BooleanField(default=True)
issue_completed = models.BooleanField(default=True)
property_change = models.BooleanField(default=False)
state_change = models.BooleanField(default=False)
comment = models.BooleanField(default=False)
mention = models.BooleanField(default=False)
issue_completed = models.BooleanField(default=False)
priority_change = models.BooleanField(default=False)
assignee_change = models.BooleanField(default=False)
start_target_date_change = models.BooleanField(default=False)
module_change = models.BooleanField(default=False)
cycle_change = models.BooleanField(default=False)
reactions = models.BooleanField(default=False)
class Meta:
verbose_name = "UserNotificationPreference"

View File

@@ -252,9 +252,20 @@ def create_user_notification(sender, instance, created, **kwargs):
UserNotificationPreference.objects.create(
user=instance,
property_change=False,
state_change=False,
comment=False,
mention=False,
issue_completed=False,
type="EMAIL",
)
UserNotificationPreference.objects.create(
user=instance,
type="IN_APP",
property_change=True,
state_change=True,
comment=True,
mention=True,
issue_completed=True,
priority_change=True,
assignee_change=True,
start_target_date_change=True,
module_change=True,
cycle_change=True,
reactions=True,
)