예제 #1
0
 def put(self, request, pk, format=None):
     question = self.get_question(pk, request.user)
     serializer = QuestionSerializer(question, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #2
0
    def test_new_questions(self):
        P_ID = 1
        url = '/api/submit/' + str(P_ID) + '/questions'
        data = [{
            "number": "1a"
        }, {
            "number": "1b"
        }, {
            "number": "2ai"
        }, {
            "number": "2aii"
        }, {
            "number": "2b"
        }]

        response = self.client.post(url, data, format='json')

        # Test status code
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        # Test response data valid
        serializer = QuestionSerializer(data=response.data,
                                        many=True,
                                        context={'paper_id': P_ID})
        self.assertTrue(serializer.is_valid(), msg=serializer.errors)

        # Test response data correct
        self.assertEqual(response.data[0]['number'], "1a")
        self.assertEqual(response.data[1]['number'], "1b")
        self.assertEqual(response.data[2]['number'], "2ai")
        self.assertEqual(response.data[3]['number'], "2aii")
        self.assertEqual(response.data[4]['number'], "2b")
예제 #3
0
    def post(self, request, paper_id):
        serializer = QuestionSerializer(data=request.data,
                                        many=True,
                                        context={'paper_id': paper_id})
        if not serializer.is_valid():
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
예제 #4
0
 def create(self, request, *args, **kwargs):
     choices = request.data.get("choices")
     serializer = QuestionSerializer(data=request.data)
     if serializer.is_valid():
         question = serializer.save()
         for choice in choices:
             Choice.objects.create(**choice, question=question)
         serializer = QuestionSerializer(instance=question)
         return Response(serializer.data)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
예제 #5
0
def question_create(request):
    """
    Create a one question.

    """
    user = request.user
    question = Question(author=user)
    if request.method == 'POST':

        serializer = QuestionSerializer(question, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
예제 #6
0
    def test_get_questions_correctly(self):
        P_COURSE = 'C141'
        P_YEAR = '2015'

        response = self.client.get('/api/' + P_COURSE + '/' + P_YEAR +
                                   '/questions')

        # Test GET response OK
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()

        # Test response data can be serialized
        serializer = QuestionSerializer(data=data, many=True)
        self.assertTrue(serializer.is_valid(), msg=str(serializer.errors))

        # Test response data correct
        for i in range(0, 4):
            self.assertEquals(data[i]['id'], i)
            self.assertEquals(data[i]['number'], str(i))
예제 #7
0
파일: views.py 프로젝트: kbagg/iitbqa
def PostQuestion(request):
    """!@brief Function which is called when a user adds a question
    @details the function takes a question object as part of the request body, extracts the object and then creates a new entry in the question table. Since the topics is a many-to-many field, the topics need to be added one by one
    @return returns the feed output for the given user
    """
    serializer = QuestionSerializer(data=request.data)
    if serializer.is_valid():
        ques = serializer.validated_data
        user = ques['user']
        question = Question(user=user,
                            username=user.name,
                            userdepartment=user.department,
                            userbio=user.bio,
                            userdegree=user.degree,
                            userspecialization=user.specialization,
                            question=ques['question'],
                            description=ques['description'])
        question.save()
        for topic in ques['topics']:
            question.topics.add(topic)
        return Feed(user.id)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #8
0
def question_update(request, pk=None):
    """
    Update all fields of question

    """
    try:
        question = Question.objects.get(pk=pk)
    except Question.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    # verifying user of this question
    user = request.user
    if question.author != user:
        return Response({'error': 'You do not have permission to update this question.'})
    if request.method == 'PUT':
        serializer = QuestionSerializer(question, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
예제 #9
0
 def post(self, request, format=None):
     serializer = QuestionSerializer(data=request.DATA)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #10
0
 def post(self, request, format=None):
     serializer = QuestionSerializer(data=request.DATA)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)