Device tokens api
[wolnelektury.git] / src / push / api / views.py
1 from rest_framework import serializers
2 from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
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
7
8
9 class DeviceTokenSerializer(serializers.ModelSerializer):
10     href = AbsoluteURLField(
11         view_name='push_api_device_token',
12         view_args=('pk',)
13     )
14
15     class Meta:
16         model = models.DeviceToken
17         fields = ['token', 'created_at', 'updated_at', 'href']
18         read_only_fields = ['created_at', 'updated_at']
19
20     def create(self, validated_data):
21         return models.DeviceToken.objects.create(
22             user=self.context['request'].user,
23             **validated_data
24         )
25
26
27 @never_cache
28 class DeviceTokensView(ListCreateAPIView):
29     permission_classes = [IsAuthenticated]
30     serializer_class = DeviceTokenSerializer
31
32     def get_queryset(self):
33         return models.DeviceToken.objects.filter(user=self.request.user)
34
35
36 @never_cache
37 class DeviceTokenView(RetrieveUpdateDestroyAPIView):
38     permission_classes = [IsAuthenticated]
39     serializer_class = DeviceTokenSerializer
40
41     def get_queryset(self):
42         return models.DeviceToken.objects.filter(user=self.request.user)