From: Radek Czajka Date: Wed, 3 Sep 2025 12:49:12 +0000 (+0200) Subject: deleting tokens X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/a6c437b4a4ef1c8d17154cb9d2c48101ef53cc47?ds=sidebyside deleting tokens --- diff --git a/src/push/api/urls.py b/src/push/api/urls.py index afd91bbc0..2920966b7 100644 --- a/src/push/api/urls.py +++ b/src/push/api/urls.py @@ -4,5 +4,4 @@ from . import views urlpatterns = [ path('deviceTokens/', views.DeviceTokensView.as_view()), - path('deviceTokens//', views.DeviceTokenView.as_view(), name='push_api_device_token'), ] diff --git a/src/push/api/views.py b/src/push/api/views.py index 9f838d2a4..9de21c9cc 100644 --- a/src/push/api/views.py +++ b/src/push/api/views.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView +from rest_framework.generics import ListCreateAPIView from rest_framework.permissions import IsAuthenticated from api.utils import never_cache from api.fields import AbsoluteURLField @@ -7,22 +7,30 @@ from push import models class DeviceTokenSerializer(serializers.ModelSerializer): - href = AbsoluteURLField( - view_name='push_api_device_token', - view_args=('pk',) - ) + deleted = serializers.BooleanField(default=False, write_only=True) class Meta: model = models.DeviceToken - fields = ['token', 'created_at', 'updated_at', 'href'] + fields = ['token', 'created_at', 'updated_at', 'deleted'] read_only_fields = ['created_at', 'updated_at'] + def save(self): + if self.validated_data['deleted']: + self.destroy(self.validated_data) + else: + return self.create(self.validated_data) + def create(self, validated_data): return models.DeviceToken.objects.create( user=self.context['request'].user, - **validated_data + token=validated_data['token'], ) + def destroy(self, validated_data): + models.DeviceToken.objects.filter( + user=self.context['request'].user, + token=validated_data['token'] + ).delete() @never_cache class DeviceTokensView(ListCreateAPIView): @@ -31,12 +39,3 @@ class DeviceTokensView(ListCreateAPIView): def get_queryset(self): return models.DeviceToken.objects.filter(user=self.request.user) - - -@never_cache -class DeviceTokenView(RetrieveUpdateDestroyAPIView): - permission_classes = [IsAuthenticated] - serializer_class = DeviceTokenSerializer - - def get_queryset(self): - return models.DeviceToken.objects.filter(user=self.request.user)