mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-17 10:55:09 +00:00
notification mark as read api modified for clear all, list sorting set to updated at field, added same field
This commit is contained in:
18
notifications/migrations/0002_notification_updated_at.py
Normal file
18
notifications/migrations/0002_notification_updated_at.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 4.2.2 on 2023-09-29 07:00
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('notifications', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='notification',
|
||||||
|
name='updated_at',
|
||||||
|
field=models.DateTimeField(auto_now=True),
|
||||||
|
),
|
||||||
|
]
|
@ -18,6 +18,7 @@ class Notification(models.Model):
|
|||||||
data = models.JSONField(default=dict, blank=True, null=True)
|
data = models.JSONField(default=dict, blank=True, null=True)
|
||||||
is_read = models.BooleanField(default=False)
|
is_read = models.BooleanField(default=False)
|
||||||
created_at = models.DateTimeField(default=timezone.now)
|
created_at = models.DateTimeField(default=timezone.now)
|
||||||
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
""" string representation """
|
""" string representation """
|
||||||
|
@ -36,7 +36,7 @@ class NotificationListSerializer(serializers.ModelSerializer):
|
|||||||
class Meta(object):
|
class Meta(object):
|
||||||
"""meta info"""
|
"""meta info"""
|
||||||
model = Notification
|
model = Notification
|
||||||
fields = ['id', 'notification_type', 'data', 'badge', 'is_read', 'created_at']
|
fields = ['id', 'notification_type', 'data', 'badge', 'is_read', 'updated_at']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_badge(obj):
|
def get_badge(obj):
|
||||||
|
@ -33,7 +33,7 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
queryset = Notification.objects.filter(notification_to_id=request.auth.payload['user_id']
|
queryset = Notification.objects.filter(notification_to_id=request.auth.payload['user_id']
|
||||||
).select_related('notification_to').order_by('-id')
|
).select_related('notification_to').order_by('-updated_at', '-id')
|
||||||
paginator = CustomPageNumberPagination()
|
paginator = CustomPageNumberPagination()
|
||||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||||
serializer = self.serializer_class(paginated_queryset, many=True)
|
serializer = self.serializer_class(paginated_queryset, many=True)
|
||||||
@ -61,6 +61,8 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
|||||||
notification_type = request.query_params.get('type', TEST_NOTIFICATION)
|
notification_type = request.query_params.get('type', TEST_NOTIFICATION)
|
||||||
send_notification(int(notification_type), None, None, request.auth.payload['user_id'],
|
send_notification(int(notification_type), None, None, request.auth.payload['user_id'],
|
||||||
{})
|
{})
|
||||||
|
if notification_type and request.query_params.get('clear_all'):
|
||||||
|
Notification.objects.filter(notification_type=notification_type).delete()
|
||||||
return custom_response(SUCCESS_CODE["3000"])
|
return custom_response(SUCCESS_CODE["3000"])
|
||||||
|
|
||||||
@action(methods=['patch'], url_path='mark-as-read', url_name='mark-as-read', detail=False,
|
@action(methods=['patch'], url_path='mark-as-read', url_name='mark-as-read', detail=False,
|
||||||
@ -69,8 +71,14 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
|||||||
"""
|
"""
|
||||||
notification list
|
notification list
|
||||||
"""
|
"""
|
||||||
if request.query_params.get('all'):
|
|
||||||
Notification.objects.filter(notification_to_id=request.auth.payload['user_id']).update(is_read=True)
|
if request.data.get('id'):
|
||||||
elif request.data.get('id'):
|
|
||||||
Notification.objects.filter(id__in=request.data.get('id')).update(is_read=True)
|
Notification.objects.filter(id__in=request.data.get('id')).update(is_read=True)
|
||||||
|
|
||||||
|
elif request.query_params.get('mark_all'):
|
||||||
|
Notification.objects.filter(notification_to_id=request.auth.payload['user_id']).update(is_read=True)
|
||||||
|
|
||||||
|
elif request.query_params.get('clear_all'):
|
||||||
|
Notification.objects.filter(notification_to_id=request.auth.payload['user_id']).delete()
|
||||||
|
|
||||||
return custom_response(SUCCESS_CODE['3039'], response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3039'], response_status=status.HTTP_200_OK)
|
||||||
|
Reference in New Issue
Block a user