1 from rest_framework import serializers
2 from rest_framework.generics import ListCreateAPIView
3 from rest_framework.permissions import IsAuthenticated
4 from api.utils import never_cache
5 from api.fields import AbsoluteURLField
6 from push import models
9 class DeviceTokenSerializer(serializers.ModelSerializer):
10 deleted = serializers.BooleanField(default=False, write_only=True)
11 # Explicit definition to disable unique validator.
12 token = serializers.CharField()
15 model = models.DeviceToken
16 fields = ['token', 'created_at', 'updated_at', 'deleted']
17 read_only_fields = ['created_at', 'updated_at']
20 if self.validated_data['deleted']:
21 self.destroy(self.validated_data)
23 return self.create(self.validated_data)
25 def create(self, validated_data):
26 obj, created = models.DeviceToken.objects.get_or_create(
27 user=self.context['request'].user,
28 token=validated_data['token'],
32 def destroy(self, validated_data):
33 models.DeviceToken.objects.filter(
34 user=self.context['request'].user,
35 token=validated_data['token']
39 class DeviceTokensView(ListCreateAPIView):
40 permission_classes = [IsAuthenticated]
41 serializer_class = DeviceTokenSerializer
43 def get_queryset(self):
44 return models.DeviceToken.objects.filter(user=self.request.user)