diff options
author | jdlugosz963 <jdlugosz963@gmail.com> | 2021-11-28 22:57:10 +0100 |
---|---|---|
committer | jdlugosz963 <jdlugosz963@gmail.com> | 2021-11-28 22:57:10 +0100 |
commit | 2634ae627659b71790147581880529dad741f425 (patch) | |
tree | 1efff96174ef42491f8823a29655d4e275208b17 /chat_api/views.py | |
parent | eaf89ff64ce5c4e39239aec50a973d1c58a40bee (diff) | |
download | lom_api-2634ae627659b71790147581880529dad741f425.tar.gz lom_api-2634ae627659b71790147581880529dad741f425.zip |
change login api
Diffstat (limited to 'chat_api/views.py')
-rw-r--r-- | chat_api/views.py | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/chat_api/views.py b/chat_api/views.py index f94f3a0..eca6d45 100644 --- a/chat_api/views.py +++ b/chat_api/views.py | |||
@@ -5,6 +5,8 @@ from rest_framework.serializers import Serializer | |||
5 | from rest_framework.views import APIView | 5 | from rest_framework.views import APIView |
6 | from rest_framework import permissions | 6 | from rest_framework import permissions |
7 | from rest_framework import generics | 7 | from rest_framework import generics |
8 | from rest_framework.views import Http404 | ||
9 | from rest_framework.generics import get_object_or_404 | ||
8 | from knox.auth import TokenAuthentication | 10 | from knox.auth import TokenAuthentication |
9 | 11 | ||
10 | from django.db.models.query import Q | 12 | from django.db.models.query import Q |
@@ -12,6 +14,17 @@ from django.db.models.query import Q | |||
12 | from .models import * | 14 | from .models import * |
13 | from .serializers import * | 15 | from .serializers import * |
14 | 16 | ||
17 | |||
18 | def set_users(request): | ||
19 | users_list = request.data.get('users', []) | ||
20 | user_pk = request.user.pk | ||
21 | |||
22 | if isinstance(users_list, list): | ||
23 | if user_pk not in users_list: | ||
24 | users_list.append(user_pk) | ||
25 | |||
26 | request.data['users'] = users_list | ||
27 | |||
15 | class GroupView(generics.ListCreateAPIView): | 28 | class GroupView(generics.ListCreateAPIView): |
16 | permission_classes = (permissions.IsAuthenticated, ) | 29 | permission_classes = (permissions.IsAuthenticated, ) |
17 | authentication_classes = (TokenAuthentication, ) | 30 | authentication_classes = (TokenAuthentication, ) |
@@ -20,9 +33,47 @@ class GroupView(generics.ListCreateAPIView): | |||
20 | def get_queryset(self): | 33 | def get_queryset(self): |
21 | return Group.objects.filter( | 34 | return Group.objects.filter( |
22 | Q(owner=self.request.user) | | 35 | Q(owner=self.request.user) | |
23 | Q(users__in=(self.request.user, )) | 36 | Q(users__in=(self.request.user.pk, )) |
24 | ).distinct() | 37 | ).distinct() |
38 | |||
39 | def get_serializer_context(self): | ||
40 | context = super(GroupView, self).get_serializer_context() | ||
41 | context.update({"request": self.request}) | ||
42 | return context | ||
25 | 43 | ||
26 | def create(self, request, *args, **kwargs): | 44 | def create(self, request, *args, **kwargs): |
27 | request.data['owner'] = request.user.pk | 45 | request.data['owner'] = request.user.pk |
28 | return super().create(request, *args, **kwargs) \ No newline at end of file | 46 | set_users(request) |
47 | return super().create(request, *args, **kwargs) | ||
48 | |||
49 | class GroupDetailView(generics.RetrieveUpdateDestroyAPIView): | ||
50 | permission_classes = (permissions.IsAuthenticated, ) | ||
51 | authentication_classes = (TokenAuthentication, ) | ||
52 | serializer_class = GroupSerializer | ||
53 | |||
54 | def get_queryset(self): | ||
55 | return Group.objects.filter( | ||
56 | Q(owner=self.request.user) | ||
57 | ).distinct() | ||
58 | |||
59 | def get_serializer_context(self): | ||
60 | context = super(GroupDetailView, self).get_serializer_context() | ||
61 | context.update({"request": self.request}) | ||
62 | return context | ||
63 | |||
64 | def update(self, request, *args, **kwargs): | ||
65 | request.data['owner'] = request.user.pk | ||
66 | set_users(request) | ||
67 | return super().update(request, *args, **kwargs) | ||
68 | |||
69 | def retrieve(self, request, pk): | ||
70 | try: | ||
71 | group = Group.objects.filter( | ||
72 | Q(owner=request.user) | | ||
73 | Q(users__in=(request.user.pk, )) | ||
74 | ).distinct().get(Q(pk=pk)) | ||
75 | except Group.DoesNotExist: | ||
76 | raise Http404 | ||
77 | |||
78 | serializer = GroupSerializer(group, context={"request": self.request}) | ||
79 | return Response(serializer.data) | ||