From f28b459bc92159a456b7de3ef7ff376939ca12ee Mon Sep 17 00:00:00 2001 From: Zambom Date: Thu, 20 Jul 2017 17:30:09 -0300 Subject: [PATCH] Adding function to get chat messages to api (initial) --- api/urls.py | 1 + api/views.py | 41 +++++++++++++++++++++++++++++++++++++++++ chat/serializers.py | 15 +++++++++++++++ subjects/serializers.py | 2 -- 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 chat/serializers.py diff --git a/api/urls.py b/api/urls.py index 5a4356b..40d57ad 100644 --- a/api/urls.py +++ b/api/urls.py @@ -15,6 +15,7 @@ router.register(r'usersapi', UserViewSet) router.register(r'users', views.LoginViewset) router.register(r'subjects', views.SubjectViewset) router.register(r'participants', views.ParticipantsViewset) +router.register(r'chat', views.ChatViewset) urlpatterns = [ #API REST diff --git a/api/views.py b/api/views.py index 1d13de0..14cee47 100644 --- a/api/views.py +++ b/api/views.py @@ -12,6 +12,9 @@ from django.db.models import Q from security.models import Security +from chat.serializers import ChatSerializer +from chat.models import TalkMessages + from subjects.serializers import SubjectSerializer from subjects.models import Subject @@ -180,4 +183,42 @@ class ParticipantsViewset(viewsets.ReadOnlyModelViewSet): response = json.dumps(info) + return HttpResponse(response) + +class ChatViewset(viewsets.ModelViewSet): + queryset = TalkMessages.objects.all() + permissions_classes = (IsAuthenticated, ) + + @csrf_exempt + @list_route(methods = ['POST'], permissions_classes = [IsAuthenticated]) + def get_messages(self, request): + username = request.data['email'] + user_two = request.data['user_two'] + + messages = None + + response = "" + + if not user_two == "": + messages = TalkMessages.objects.filter((Q(talk__user_one__email = username) & Q(talk__user_two__email = user_two)) | (Q(talk__user_one__email = user_two) & Q(talk__user_two__email = username))).order_by('-create_date') + + serializer = ChatSerializer(messages, many = True) + + json_r = json.dumps(serializer.data) + json_r = json.loads(json_r) + + info = {} + + info["data"] = {} + info["data"]["messages"] = json_r + + info["message"] = "" + info["type"] = "" + info["title"] = "" + info["success"] = True + info["number"] = 1 + info['extra'] = 0 + + response = json.dumps(info) + return HttpResponse(response) \ No newline at end of file diff --git a/chat/serializers.py b/chat/serializers.py new file mode 100644 index 0000000..9f2cec1 --- /dev/null +++ b/chat/serializers.py @@ -0,0 +1,15 @@ +from rest_framework import serializers + +from .models import TalkMessages + +from subjects.serializers import SubjectSerializer +from users.serializers import UserSerializer + +class ChatSerializer(serializers.ModelSerializer): + user = UserSerializer() + subject = SubjectSerializer() + image = serializers.CharField(required = False, allow_blank = True, max_length = 255) + + class Meta: + model = TalkMessages + exclude = ["talk"] \ No newline at end of file diff --git a/subjects/serializers.py b/subjects/serializers.py index 4e80c9f..2887480 100644 --- a/subjects/serializers.py +++ b/subjects/serializers.py @@ -2,8 +2,6 @@ from rest_framework import serializers from .models import Subject, Tag -from users.serializers import UserSerializer - class TagSerializer(serializers.ModelSerializer): def validate(self, data): query = Tag.objects.filter(name = data['name']) -- libgit2 0.21.2