Browse Source

system notifications connected to admin panel

master
Mohsen Taba 1 week ago
parent
commit
8adea9018e
  1. 13
      apps/account/serializers/notification.py
  2. 1
      apps/account/urls.py
  3. 19
      apps/account/views/notification.py

13
apps/account/serializers/notification.py

@ -1,7 +1,7 @@
from rest_framework import serializers
from apps.account.models import Notification
from apps.account.models import Notification, NotificationTemplate
from apps.account.models import User
@ -33,4 +33,13 @@ class AdminNotificationSerializer(serializers.ModelSerializer):
class Meta:
model = Notification
fields = ['id', 'title', 'message', 'is_read', 'service', 'created_at', 'updated_at', 'user_fullname', 'user_email', 'user_id']
fields = ['id', 'title', 'message', 'is_read', 'service', 'created_at', 'updated_at', 'user_fullname', 'user_email', 'user_id']
class NotificationTemplateSerializer(serializers.ModelSerializer):
class Meta:
model = NotificationTemplate
fields = [
'id', 'notification_type', 'name', 'is_active',
'title_ru', 'title_en', 'body_ru', 'body_en', 'placeholders_info'
]

1
apps/account/urls.py

@ -11,6 +11,7 @@ admin_router = SimpleRouter()
admin_router.register(r'users', views.AdminUserViewSet, basename='admin-users')
admin_router.register(r'directory-users', views.AdminUserDirectoryViewSet, basename='admin-directory-users')
admin_router.register(r'notifications', views.AdminNotificationViewSet, basename='admin-notifications')
admin_router.register(r'notification-templates', views.AdminNotificationTemplateViewSet, basename='admin-notification-templates')
# Hide admin viewsets from swagger
for prefix, viewset, basename in admin_router.registry:

19
apps/account/views/notification.py

@ -4,8 +4,8 @@ from rest_framework.authentication import TokenAuthentication
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from rest_framework.permissions import IsAuthenticated
from apps.account.serializers import NotificationSerializer, NotificationSendSerializer, AdminNotificationSerializer
from apps.account.models import Notification, User
from apps.account.serializers import NotificationSerializer, NotificationSendSerializer, AdminNotificationSerializer, NotificationTemplateSerializer
from apps.account.models import Notification, User, NotificationTemplate
from apps.account.tasks import send_notification
from utils.pagination import StandardResultsSetPagination
from django.db.models import Q
@ -380,3 +380,18 @@ class TestNotificationAPIView(generics.GenericAPIView):
'results': results,
'fcm_token_registered': bool(user.fcm)
}, status=status.HTTP_200_OK)
class AdminNotificationTemplateViewSet(ModelViewSet):
permission_classes = [IsSuperAdmin]
authentication_classes = [TokenAuthentication]
serializer_class = NotificationTemplateSerializer
queryset = NotificationTemplate.objects.all().order_by('id')
pagination_class = StandardResultsSetPagination
# Disable create and destroy actions as templates are system-defined
def create(self, request, *args, **kwargs):
return Response({'error': 'Method not allowed.'}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
def destroy(self, request, *args, **kwargs):
return Response({'error': 'Method not allowed.'}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
Loading…
Cancel
Save