summaryrefslogtreecommitdiffstats
path: root/chat_api
diff options
context:
space:
mode:
authorjdlugosz963 <jdlugosz963@gmail.com>2021-11-26 18:44:38 +0100
committerjdlugosz963 <jdlugosz963@gmail.com>2021-11-26 18:44:38 +0100
commiteaf89ff64ce5c4e39239aec50a973d1c58a40bee (patch)
tree161c53033c08f9f0bb499dd3c1f394a0f508cf4e /chat_api
parent45daed0c4fd60febf9458c889f7a89c0e5ab70bd (diff)
downloadlom_api-eaf89ff64ce5c4e39239aec50a973d1c58a40bee.tar.gz
lom_api-eaf89ff64ce5c4e39239aec50a973d1c58a40bee.zip
add groups views
Diffstat (limited to 'chat_api')
-rw-r--r--chat_api/admin.py5
-rw-r--r--chat_api/models.py26
-rw-r--r--chat_api/serializers.py8
-rw-r--r--chat_api/urls.py3
-rw-r--r--chat_api/views.py29
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 @@
1from django.contrib import admin 1from django.contrib import admin
2from .models import *
2 3
3# Register your models here. 4admin.site.register(DmMessage)
5admin.site.register(GmMessage)
6admin.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 @@
1from django.db import models 1from django.db import models
2from django.contrib.auth.models import User
3from django.db.models.base import Model
2 4
3# Create your models here. 5class 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
14class 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
20class 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 @@
1from django.db.models import fields
2from rest_framework import serializers
3from .models import *
4
5class 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 @@
1from django.urls import path 1from django.urls import path
2from .views import GroupView
2 3
3urlpatterns = [ 4urlpatterns = [
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 @@
1from django.shortcuts import render 1from django.db.models.query import QuerySet
2from django.http.response import Http404
3from rest_framework.response import Response
4from rest_framework.serializers import Serializer
5from rest_framework.views import APIView
6from rest_framework import permissions
7from rest_framework import generics
8from knox.auth import TokenAuthentication
2 9
3# Create your views here. 10from django.db.models.query import Q
11
12from .models import *
13from .serializers import *
14
15class 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