Beispiel #1
0
def question_list(request):
    print(request.user)

    # print("Request has auth header: " + str(request.has_header("Authorization")))
    # print(request.auth)
    if request.method == 'GET':
        ret = dict()
        user = request.user
        usersQuestions = None
        if user.is_anonymous():
            ret['usersQuestions'] = []
        else:
            usersQuestions = TargetedQuestion.objects.filter(
                user=user.profile).values_list('question', flat=True)
            userQuestionObj = Question.objects.filter(id__in=usersQuestions)
            userQuestions_serializer = QuestionSerializer(
                userQuestionObj, many=True, context={'request': request})
            ret['userQuestions'] = userQuestions_serializer.data

        questions = Question.objects.all().order_by('-date').exclude(
            id__in=[18])
        # if usersQuestions:
        # 	questions = Question.objects.all().order_by('-date').exclude(id__in=usersQuestions)
        serializer = QuestionSerializer(questions,
                                        many=True,
                                        context={'request': request})
        ret['popularQuestions'] = serializer.data
        return JSONResponse(add_user(ret, request))
Beispiel #2
0
def question_create(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = QuestionSerializer(data=data,
                                        context={'request': request})
        if serializer.is_valid():
            new_question = serializer.save()
            target_from_question(new_question)
            get_news_for_question(new_question)
            return JSONResponse(add_user(serializer.data, request))
        return JSONResponse(serializer.errors, status=400)
Beispiel #3
0
def search(request):
    search_term = request.GET.get('q', None)
    if search_term:
        ret = dict()

        users_name = User.objects.filter(username__icontains=search_term)
        user_first = User.objects.filter(first_name__icontains=search_term)
        user_last = User.objects.filter(last_name__icontains=search_term)
        user = (users_name | user_first | user_last).distinct('id')
        user_profiles = UserProfile.objects.filter(user__in=user)
        print("Search return " + str(user_profiles.count()) + " users")

        questions_text = Question.objects.filter(text__icontains=search_term)
        categories_text = Category.objects.filter(
            category__icontains=search_term)
        questions_cat = Question.objects.filter(categories__in=categories_text)
        question_asker = Question.objects.filter(asker__in=user_profiles)
        question_return_set = (questions_text | questions_cat
                               | question_asker).distinct('id')

        print("Search return " + str(question_return_set.count()) +
              " questions")

        serializer = UserProfileSerializer(user_profiles, many=True)
        ret['users'] = serializer.data
        serializer = QuestionSerializer(question_return_set,
                                        many=True,
                                        context={'request': request})
        ret['questions'] = serializer.data

        return JSONResponse(add_user(ret, request))
    return JSONResponse(serializer.errors, status=400)
Beispiel #4
0
def profile(request, pk):
    try:
        user = UserProfile.objects.get(pk=pk)
    except UserProfile.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        user_data = UserProfileSerializer(user).data

        users_questions = Question.objects.filter(asker=user)
        questions_data = QuestionSerializer(users_questions, many=True).data
        users_answers = Answer.objects.filter(user=user)
        answers_data = AnswerSerializer(users_answers, many=True).data

        connections1 = Connected.objects.filter(user1=user).values_list(
            'user2', flat=True)
        connections_as_user = UserProfile.objects.filter(id__in=connections1)
        connections_data = UserProfileSerializer(connections_as_user,
                                                 many=True).data

        ret = dict()
        ret['user'] = user_data
        ret['questions'] = questions_data
        ret['connections'] = connections_data
        ret['numQuestionsAsked'] = Question.objects.filter(asker=user).count()
        ret['numQuestionsAnswered'] = Answer.objects.filter(user=user).count()
        ret['numConnections'] = Connected.objects.filter(user2=user).count()
        ret['answers'] = answers_data
        return JSONResponse(add_user(ret, request))
Beispiel #5
0
def question_update(request, pk):
    try:
        question = Question.objects.get(pk=pk)
    except Question.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = QuestionSerializer(question,
                                        data=data,
                                        partial=True,
                                        context={'request': request})
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(add_user(serializer.data, request))
        return JSONResponse(serializer.errors, status=400)
Beispiel #6
0
def question_detail(request, pk):
    try:
        question = Question.objects.get(pk=pk)
    except Question.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serializer = QuestionSerializer(question, context={'request': request})
        return JSONResponse(add_user(serializer.data, request))
Beispiel #7
0
def answer_create(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = AnswerSerializer(data=data)
        if serializer.is_valid():
            answer = serializer.save()
            questionSerializer = QuestionSerializer(
                answer.question, context={'request': request})
            target_from_answer(answer)
            return JSONResponse(add_user(questionSerializer.data, request))
        return JSONResponse(serializer.errors, status=400)
Beispiel #8
0
def replies(request, pk):
    try:
        question = Question.objects.get(pk=pk)
    except Question.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        replies = Question.objects.filter(replyTo=pk)
        serializer = QuestionSerializer(replies,
                                        many=True,
                                        context={'request': request})
        return JSONResponse(add_user(serializer.data, request))