From 8bcd920e5247f7aed3c5810e32488beed4bb9e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=A1=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D0=BB=D0=BE=D0=B2?= Date: Wed, 17 May 2023 03:00:45 +1000 Subject: [PATCH] remade CompatibleUsersView --- pairent_backend/pairent_app/serializer.py | 14 ++++- pairent_backend/pairent_app/views.py | 64 ++++++++++++++++++----- 2 files changed, 63 insertions(+), 15 deletions(-) diff --git a/pairent_backend/pairent_app/serializer.py b/pairent_backend/pairent_app/serializer.py index 29416a2..5df50cd 100644 --- a/pairent_backend/pairent_app/serializer.py +++ b/pairent_backend/pairent_app/serializer.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Apartament, User +from .models import Apartament, User, PsychTestAnswers class ApartamentListSerializer(serializers.ModelSerializer): @@ -26,4 +26,14 @@ class PsychTestAddResultSerializer(serializers.ModelSerializer): class PublicUserSerializer(serializers.ModelSerializer): class Meta: model = User - exclude = ('favorites_apartments', 'comparison_apartments') \ No newline at end of file + exclude = ('favorites_apartments', 'comparison_apartments') + +class PsychTestReultsSerializer(serializers.ModelSerializer): + class Meta: + model = PsychTestAnswers + fields = "__all__" + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = "__all__" \ No newline at end of file diff --git a/pairent_backend/pairent_app/views.py b/pairent_backend/pairent_app/views.py index b474033..0a2baed 100644 --- a/pairent_backend/pairent_app/views.py +++ b/pairent_backend/pairent_app/views.py @@ -14,7 +14,9 @@ from .models import Apartament, User, PsychTestAnswers from .serializer import (ApartamentListSerializer, ApartamentDetailSerializer, PsychTestAddResultSerializer, - PublicUserSerializer) + PublicUserSerializer, + PsychTestReultsSerializer, + UserSerializer) import json, math, random, re, requests, oidc_client, base64, hashlib @@ -137,23 +139,27 @@ class CompatibleUsersView(viewsets.ViewSet): except User.DoesNotExist: return Response({'error': 'user not found'}, 404); - score = this_user.psych_test_result; + try: + answers_this_user = PsychTestReultsSerializer(PsychTestAnswers.objects.get(user=this_user)).dict; + except PsychTestAnswers.DoesNotExist: + return Response({'error': 'answers not found'}, 404); - users_query = User.objects.all(); + users_answers_query = PsychTestReultsSerializer(PsychTestAnswers.objects.all(), many=True).dict users = []; - for user in users_query: - if (abs(user.psych_test_result - score) < 20): - users.append(PublicUserSerializer(user).data); + for user_answers in users_answers_query: + score = 0 + for i in range(1, 12): + if answers_this_user[i] == user_answers[i]: + score += 1 + if score / 12 * 100 > 30: + users.append(UserSerializer(User.objects.get(pk=user_answers[0])).data) - random.shuffle(users); - users = users[:7]; - - for i in range(3): - users.append(PublicUserSerializer(random.choice(users_query)).data); + # for user in users_query: + # if (abs(user.psych_test_result - score) < 20): + # users.append(PublicUserSerializer(user).data); - random.shuffle(users); return Response(users); @@ -286,4 +292,36 @@ class UserGet(APIView): res.status_code = 404; return res; - return JsonResponse(PublicUserSerializer(user).data); \ No newline at end of file + return JsonResponse(PublicUserSerializer(user).data); + + + + + +# for user_answer in users_answers_query: +# score = 0 +# if user_answer.first_question == scores_this_user.first_question: +# score += 1 +# if user_answer.second_question == scores_this_user.second_question: +# score += 1 +# if user_answer.third_question == scores_this_user.third_question: +# score += 1 +# if user_answer.fourth_question == scores_this_user.fourth_question: +# score += 1 +# if user_answer.fifth_question == scores_this_user.fifth_question: +# score += 1 +# if user_answer.sixth_question == scores_this_user.sixth_question: +# score += 1 +# if user_answer.seventh_question == scores_this_user.seventh_question: +# score += 1 +# if user_answer.eighth_question == scores_this_user.eighth_question: +# score += 1 +# if user_answer.nineth_question == scores_this_user.nineth_question: +# score += 1 +# if user_answer.tenth_question == scores_this_user.tenth_question: +# score += 1 +# if user_answer.eleventh_question == scores_this_user.eleventh_question: +# score += 1 +# if user_answer.twelfth_question == scores_this_user.twelfth_question: +# score += 1 +# if \ No newline at end of file