コード例 #1
0
    def patch(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        if user.is_superuser == True:
            idea = Idea.objects.get(id=request.data.get('id', None))
            repo_link = request.data.get('repo_link', None)
            if repo_link == None or repo_link == "":
                return Response({"message": "Github Repository Link required"},
                                status=status.HTTP_400_BAD_REQUEST)
            idea.repo_link = repo_link
            idea.is_completed = True
            idea.save()
            idea_serializer = IdeaSerializer(idea)
            return Response(
                {
                    "message": "Idea successfully marked as completed",
                    "Idea": idea_serializer.data
                },
                status=status.HTTP_200_OK)

        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #2
0
    def post(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        req_data = request.data
        keys = {"PENDING": 0, "PUBLISHED": 1, "REJECTED": 2}

        if user.is_superuser == True:
            try:
                idea = Idea.objects.get(id=req_data['idea_id'])
                idea.is_reviewed = req_data['is_reviewed']
                idea.reviewer_id = user
                idea.save()
                serializer = IdeaSerializer(idea)
                return Response(
                    {
                        "message": "Idea reviewed successfully",
                        "idea": serializer.data
                    },
                    status=status.HTTP_200_OK)
            except:
                return Response({"message": "Invalid Idea Id"},
                                status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message": "Only Admin can Access"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #3
0
    def get(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        date = request.query_params.get("date", None)
        if date == None or date == "":
            return Response({"message": "Date missing"},
                            status=status.HTTP_400_BAD_REQUEST)

        date = date.split('-')
        day = int(date[0])
        month = int(date[1])
        year = int(date[2])
        questions = Question.objects.filter(
            date_time__date=datetime.date(year, month, day))
        serializer = QuestionSerializer(questions, many=True)

        if len(serializer.data) == 0:
            return Response({"message": "No Question Found"},
                            status=status.HTTP_204_NO_CONTENT)

        return Response({"message": serializer.data},
                        status=status.HTTP_200_OK)
コード例 #4
0
    def get(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        if user.is_superuser == True:
            answers = Answer.objects.filter(evaluated=False)
            if len(answers) == 0:
                return Response({"message": "No Answers Found"},
                                status=status.HTTP_204_NO_CONTENT)

            response = []
            for answer in answers:
                user = answer.user_id
                serializer = AnswerSerializer(answer)
                serializer = serializer.data
                serializer['username'] = user.username
                response.append(serializer)

            return Response({"message": response}, status=status.HTTP_200_OK)
        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #5
0
    def get(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        req_data = request.data

        if user.is_superuser == True:
            objects = SocialMediaDetails.objects.all()
            serializers = SocialMediaDetailsSerializer(objects, many=True)
            return Response(
                {
                    "message": "Social Media Details",
                    "Details": serializers.data
                },
                status=status.HTTP_200_OK)
        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #6
0
    def get(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        offset = request.query_params.get('offset', None)
        if offset != None and offset != "":
            offset = int(offset)
            start = offset * 5
            end = (offset + 1) * 5

        req_data = request.data
        keys = {"PENDING": 0, "PUBLISHED": 1, "REJECTED": 2}

        if user.is_superuser == True:
            ideas = list(
                Idea.objects.filter(is_reviewed=keys['REJECTED'],
                                    is_deleted=False))
            serializer = IdeaSerializer(ideas, many=True)

            if offset == None or offset == "":
                serializer_data = serializer.data
            else:
                serializer_data = serializer.data[start:end]

            if len(serializer_data) == 0:
                return Response({"message": "No Idea Found"},
                                status=status.HTTP_204_NO_CONTENT)

            for idea in serializer_data:
                user = User.objects.get(id=idea['user_id'])
                idea['username'] = user.username

            return Response({"message": serializer_data},
                            status=status.HTTP_200_OK)
        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #7
0
    def get(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        questions = Question.objects.all()
        if len(questions) == 0:
            return Response({"message": "No Questions Found"},
                            status=status.HTTP_204_NO_CONTENT)

        serializer = QuestionSerializer(questions, many=True)
        return Response({"message": serializer.data},
                        status=status.HTTP_200_OK)
コード例 #8
0
    def get(self, request, pk):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        try:
            question = Question.objects.get(id=pk)
            serializer = QuestionSerializer(question)
            return Response({"message": serializer.data},
                            status=status.HTTP_200_OK)
        except Question.DoesNotExist:
            return Response({"message": "Questions Does Not Exist"},
                            status=status.HTTP_400_BAD_REQUEST)
コード例 #9
0
    def post(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        if user.is_superuser == True:
            req_data = request.data
            try:
                answer = Answer.objects.get(id=req_data['answer_id'])
                if answer.evaluated == True:
                    return Response({"message": "Answer Already Evaluated"},
                                    status=status.HTTP_400_BAD_REQUEST)
                marks = req_data.get("marks", None)
                if marks == None or marks == "":
                    return Response({"message": "Please provide marks"},
                                    status=status.HTTP_400_BAD_REQUEST)
                answer.marks = marks
                answer.evaluated = True
                answer.save()
                serializer = AnswerSerializer(answer)
                return Response(
                    {
                        "message": "Marks Saved",
                        "Answer": serializer.data
                    },
                    status=status.HTTP_200_OK)

            except Answer.DoesNotExist:
                return Response({"message": "ANswer Does Not Exist"},
                                status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #10
0
    def post(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        if user.is_superuser == True:
            serializer = QuestionSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response({"message": serializer.data},
                                status=status.HTTP_200_OK)
            else:
                return Response({"message": "Invalid Question"},
                                status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)
コード例 #11
0
    def get(self, request, format=None):
        # Get User and delete the token
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        response = {
            "message": "Admin logged out",
            "Details": {
                "id": user.id,
                "email": user.email
            }
        }

        usertoken = UserToken.objects.get(user=user.id)
        usertoken.delete()
        return Response(response, status=status.HTTP_200_OK)
コード例 #12
0
    def post(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        if user.is_superuser == False:
            return Response({"message": "Not an Admin"},
                            status=status.HTTP_403_FORBIDDEN)

        if 'file' not in request.data:
            return Response({"message": "File Missing"},
                            status=status.HTTP_400_BAD_REQUEST)

        file = request.data['file']
        extension = file.name.split('.')[-1]
        if extension not in ['csv', 'xls', 'xlsx']:
            return Response({"message": "Invalid File Format"},
                            status=status.HTTP_400_BAD_REQUEST)

        content = file.read()
        records = pyexcel.iget_records(file_type=extension,
                                       file_content=content)
        print(
            "____________________________________________________________________"
        )
        for record in records:

            #####   USERNAME   ########
            username = record.get('username', None)
            if username == "":
                print("LOGS: USER -> Username Missing")
                continue

            #####   EMAIL   ########
            email = record.get('email', None)
            if email == "":
                email = None

            #####   ANSWER   ########
            answer_body = record.get('answer_body', None)
            if answer_body == "":
                answer_body = None

            #####   MARKS   ########
            evaluated = False
            marks = record.get('marks', None)
            if marks == "":
                marks = 0
                evaluated = False
            else:
                marks = int(marks)
                evaluated = True
            platform = 1

            user = User.objects.filter(
                Q(username__iexact=username) & Q(email=email))
            if len(user) != 0:
                #####   QUESTION   ########
                daily_challenge = record.get('daily_challenge', None)
                if daily_challenge == "":
                    print("LOGS: QUESTION -> Question Missing")
                    continue
                try:
                    question = Question.objects.get(id=daily_challenge)
                except Question.DoesNotExist:
                    print("LOGS: QUESTION -> Question Not Found")
                    continue
                user = user[0]

                answer = {
                    "answer_type": 0,
                    "answer_body": answer_body,
                    "daily_challenge": question.id,
                    "user_id": user.id,
                    "marks": marks,
                    "evaluated": evaluated
                }

            else:
                user_data = {
                    "username": username,
                    "email": email,
                    "platform": platform
                }
                user_serializer = UserSerializer(data=user_data)
                if user_serializer.is_valid():
                    user_serializer.save()
                    print("LOGS: USER -> New User created username = "******"":
                        print("LOGS: QUESTION -> Question Missing")
                        continue
                    try:
                        question = Question.objects.get(id=daily_challenge)
                    except Question.DoesNotExist:
                        print("LOGS: QUESTION -> Question Not Found")
                        continue
                    answer = {
                        "answer_type": 0,
                        "answer_body": answer_body,
                        "daily_challenge": question.id,
                        "user_id": user.id,
                        "marks": marks,
                        "evaluated": evaluated
                    }
                else:
                    print("LOGS: USER -> Invalid user username = "******"LOGS: ANSWER -> Answer Already Stored for user " +
                      username)

            except:
                serializer = AnswerSerializer(data=answer)
                if serializer.is_valid():
                    serializer.save()
                    new_answer = Answer.objects.get(
                        user_id=answer['user_id'], daily_challenge=question.id)
                    new_answer.evaluated = evaluated
                    new_answer.save()
                    print("LOGS: ANSWER -> Answer stored for " + username)
                else:
                    print("LOGS: ANSWER -> Invalid Answer of " + username)

        print(
            "____________________________________________________________________"
        )
        return Response({"message": "Records saved succesfully"},
                        status=status.HTTP_200_OK)
コード例 #13
0
    def post(self, request):
        token = request.headers.get('Authorization', None)
        if token is None or token == "":
            return Response({"message": "Authorization credentials missing"},
                            status=status.HTTP_403_FORBIDDEN)

        user = get_user(token)
        if user is None:
            return Response({"message": "User Already Logged Out"},
                            status=status.HTTP_403_FORBIDDEN)

        req_data = {}
        req_data['answer_body'] = request.data.get("answer_body", None)
        req_data['answer_type'] = request.data.get("answer_type", None)
        req_data['daily_challenge'] = request.data.get("daily_challenge", None)
        req_data['weekly_challenge'] = request.data.get(
            "weekly_challenge", None)
        req_data['user_id'] = user.id

        print(req_data['answer_body'])
        print(req_data['answer_type'])
        print(req_data['daily_challenge'])
        print(req_data['weekly_challenge'])
        print(req_data['user_id'])

        if req_data['daily_challenge'] and req_data['weekly_challenge']:
            print("Both are None")
            return Response({"message": "Invlaid Answer"},
                            status=status.HTTP_400_BAD_REQUEST)

        if req_data['daily_challenge'] != None:
            answer = Answer.objects.filter(
                Q(user_id=user.id)
                & Q(daily_challenge=req_data['daily_challenge']))
        else:
            answer = Answer.objects.filter(
                Q(user_id=user.id)
                & Q(weekly_challenge=req_data['weekly_challenge']))

        trial = AnswerSerializer(answer, many=True)

        print(trial.data)

        if len(answer) != 0:
            answer = answer[0]
            if answer.answer_type == 1 and req_data[
                    'answer_body'] != None and answer.evaluated == False:
                temp = req_data['answer_body'].split(",")
                empty = True
                for link in temp:
                    if link != "" and link != " ":
                        empty = False
                if empty:
                    return Response({"message": "Please enter answer"},
                                    status=status.HTTP_400_BAD_REQUEST)
                answer.answer_body = req_data['answer_body']
                answer.save()
                serializer = AnswerSerializer(answer)
                return Response(
                    {
                        "message": "Answer saved",
                        "Answer": serializer.data
                    },
                    status=status.HTTP_200_OK)
            else:
                print("Already Answered")
                return Response({"message": "Already Answered"},
                                status=status.HTTP_400_BAD_REQUEST)

        serializer = AnswerSerializer(data=req_data)
        if serializer.is_valid():
            serializer.save()
            return Response(
                {
                    "message": "Answer Saved",
                    "Answer": serializer.data
                },
                status=status.HTTP_200_OK)
        else:
            print(serializer.errors)
            return Response({"message": "Invalid Answer"},
                            status=status.HTTP_400_BAD_REQUEST)