diff options
author | jdlugosz963 <jdlugosz963@gmail.com> | 2021-11-26 18:44:38 +0100 |
---|---|---|
committer | jdlugosz963 <jdlugosz963@gmail.com> | 2021-11-26 18:44:38 +0100 |
commit | eaf89ff64ce5c4e39239aec50a973d1c58a40bee (patch) | |
tree | 161c53033c08f9f0bb499dd3c1f394a0f508cf4e /chat_api | |
parent | 45daed0c4fd60febf9458c889f7a89c0e5ab70bd (diff) | |
download | lom_api-eaf89ff64ce5c4e39239aec50a973d1c58a40bee.tar.gz lom_api-eaf89ff64ce5c4e39239aec50a973d1c58a40bee.zip |
add groups views
Diffstat (limited to 'chat_api')
-rw-r--r-- | chat_api/admin.py | 5 | ||||
-rw-r--r-- | chat_api/models.py | 26 | ||||
-rw-r--r-- | chat_api/serializers.py | 8 | ||||
-rw-r--r-- | chat_api/urls.py | 3 | ||||
-rw-r--r-- | chat_api/views.py | 29 |
5 files changed, 66 insertions, 5 deletions
diff --git a/chat_api/admin.py b/chat_api/admin.py index 8c38f3f..50ad2b0 100644 --- a/chat_api/admin.py +++ b/chat_api/admin.py | |||
@@ -1,3 +1,6 @@ | |||
1 | from django.contrib import admin | 1 | from django.contrib import admin |
2 | from .models import * | ||
2 | 3 | ||
3 | # Register your models here. | 4 | admin.site.register(DmMessage) |
5 | admin.site.register(GmMessage) | ||
6 | admin.site.register(Group) \ No newline at end of file | ||
diff --git a/chat_api/models.py b/chat_api/models.py index 71a8362..5076d0b 100644 --- a/chat_api/models.py +++ b/chat_api/models.py | |||
@@ -1,3 +1,27 @@ | |||
1 | from django.db import models | 1 | from django.db import models |
2 | from django.contrib.auth.models import User | ||
3 | from django.db.models.base import Model | ||
2 | 4 | ||
3 | # Create your models here. | 5 | class DmMessage(models.Model): |
6 | sender = models.ForeignKey(User, related_name="sender_dm_message", on_delete=models.CASCADE) | ||
7 | reciever = models.ForeignKey(User, related_name="receiver_dm_message", on_delete=models.CASCADE) | ||
8 | message = models.TextField(null=False) | ||
9 | create_date = models.DateTimeField(auto_now=True) | ||
10 | |||
11 | def __str__(self): | ||
12 | return str(self.sender) | ||
13 | |||
14 | class Group(models.Model): | ||
15 | name = models.CharField(max_length=16, null=False) | ||
16 | owner = models.ForeignKey(User, related_name="owner_group", on_delete=models.CASCADE) | ||
17 | users = models.ManyToManyField(User, related_name="users_group") | ||
18 | create_date = models.DateTimeField(auto_now=True) | ||
19 | |||
20 | class GmMessage(models.Model): | ||
21 | sender = models.ForeignKey(User, related_name="sender_gm_message", on_delete=models.CASCADE) | ||
22 | reciever = models.ForeignKey(Group, related_name="receiver_gm_message", on_delete=models.CASCADE) | ||
23 | message = models.TextField(null=False) | ||
24 | create_date = models.DateTimeField(auto_now=True) | ||
25 | |||
26 | def __str__(self): | ||
27 | return str(self.sender) \ No newline at end of file | ||
diff --git a/chat_api/serializers.py b/chat_api/serializers.py new file mode 100644 index 0000000..50d84e0 --- /dev/null +++ b/chat_api/serializers.py | |||
@@ -0,0 +1,8 @@ | |||
1 | from django.db.models import fields | ||
2 | from rest_framework import serializers | ||
3 | from .models import * | ||
4 | |||
5 | class GroupSerializer(serializers.ModelSerializer): | ||
6 | class Meta: | ||
7 | model = Group | ||
8 | fields = '__all__' | ||
diff --git a/chat_api/urls.py b/chat_api/urls.py index d2d839f..9fa6016 100644 --- a/chat_api/urls.py +++ b/chat_api/urls.py | |||
@@ -1,5 +1,6 @@ | |||
1 | from django.urls import path | 1 | from django.urls import path |
2 | from .views import GroupView | ||
2 | 3 | ||
3 | urlpatterns = [ | 4 | urlpatterns = [ |
4 | 5 | path('groups/', GroupView.as_view(), '') | |
5 | ] | 6 | ] |
diff --git a/chat_api/views.py b/chat_api/views.py index 91ea44a..f94f3a0 100644 --- a/chat_api/views.py +++ b/chat_api/views.py | |||
@@ -1,3 +1,28 @@ | |||
1 | from django.shortcuts import render | 1 | from django.db.models.query import QuerySet |
2 | from django.http.response import Http404 | ||
3 | from rest_framework.response import Response | ||
4 | from rest_framework.serializers import Serializer | ||
5 | from rest_framework.views import APIView | ||
6 | from rest_framework import permissions | ||
7 | from rest_framework import generics | ||
8 | from knox.auth import TokenAuthentication | ||
2 | 9 | ||
3 | # Create your views here. | 10 | from django.db.models.query import Q |
11 | |||
12 | from .models import * | ||
13 | from .serializers import * | ||
14 | |||
15 | class GroupView(generics.ListCreateAPIView): | ||
16 | permission_classes = (permissions.IsAuthenticated, ) | ||
17 | authentication_classes = (TokenAuthentication, ) | ||
18 | serializer_class = GroupSerializer | ||
19 | |||
20 | def get_queryset(self): | ||
21 | return Group.objects.filter( | ||
22 | Q(owner=self.request.user) | | ||
23 | Q(users__in=(self.request.user, )) | ||
24 | ).distinct() | ||
25 | |||
26 | def create(self, request, *args, **kwargs): | ||
27 | request.data['owner'] = request.user.pk | ||
28 | return super().create(request, *args, **kwargs) \ No newline at end of file | ||