mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-17 02:45:08 +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)
|
||||
is_read = models.BooleanField(default=False)
|
||||
created_at = models.DateTimeField(default=timezone.now)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
""" string representation """
|
||||
|
@ -36,7 +36,7 @@ class NotificationListSerializer(serializers.ModelSerializer):
|
||||
class Meta(object):
|
||||
"""meta info"""
|
||||
model = Notification
|
||||
fields = ['id', 'notification_type', 'data', 'badge', 'is_read', 'created_at']
|
||||
fields = ['id', 'notification_type', 'data', 'badge', 'is_read', 'updated_at']
|
||||
|
||||
@staticmethod
|
||||
def get_badge(obj):
|
||||
|
@ -33,7 +33,7 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
||||
:return:
|
||||
"""
|
||||
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()
|
||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||
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)
|
||||
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"])
|
||||
|
||||
@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
|
||||
"""
|
||||
if request.query_params.get('all'):
|
||||
Notification.objects.filter(notification_to_id=request.auth.payload['user_id']).update(is_read=True)
|
||||
elif request.data.get('id'):
|
||||
|
||||
if request.data.get('id'):
|
||||
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)
|
||||
|
Reference in New Issue
Block a user