remade CompatibleUsersView
This commit is contained in:
parent
ecc8762c56
commit
8bcd920e52
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from .models import Apartament, User
|
||||
from .models import Apartament, User, PsychTestAnswers
|
||||
|
||||
|
||||
class ApartamentListSerializer(serializers.ModelSerializer):
|
||||
|
@ -27,3 +27,13 @@ class PublicUserSerializer(serializers.ModelSerializer):
|
|||
class Meta:
|
||||
model = User
|
||||
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__"
|
|
@ -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 user in users_query:
|
||||
# if (abs(user.psych_test_result - score) < 20):
|
||||
# users.append(PublicUserSerializer(user).data);
|
||||
|
||||
for i in range(3):
|
||||
users.append(PublicUserSerializer(random.choice(users_query)).data);
|
||||
|
||||
random.shuffle(users);
|
||||
|
||||
return Response(users);
|
||||
|
||||
|
@ -287,3 +293,35 @@ class UserGet(APIView):
|
|||
return res;
|
||||
|
||||
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
|
Loading…
Reference in New Issue