コード例 #1
0
ファイル: views.py プロジェクト: swsnu/swpp2020-team16
def group_invite_view(request):
    if request.method == "GET":
        try:
            coder = Coder.objects.get(user=request.user)
        except ObjectDoesNotExist:
            return HttpResponseBadRequest()
        invitations = get_dicts_with_filter(Invitation.objects,
                                            receiver=coder,
                                            is_accepted=False)
        return JsonResponse(invitations, safe=False)
    elif request.method == "POST":
        try:
            manager = Manager.objects.get(user=request.user)
            body = request.body.decode()
            receiver_id = json.loads(body)["receiver"]
            group_id = json.loads(body)["group_id"]
            receiver = Coder.objects.get(user__id=receiver_id)
            group = Group.objects.get(pk=group_id)
        except (KeyError, JSONDecodeError, ObjectDoesNotExist) as error:
            return HttpResponseBadRequest(error)

        invitation = Invitation(sender=manager, receiver=receiver, group=group)
        invitation.save()

        return JsonResponse(invitation.to_dict(), status=201)
    else:
        return HttpResponseNotAllowed(["GET", "POST"])
コード例 #2
0
ファイル: views.py プロジェクト: swsnu/swpp2020-team16
def global_report_view(request):
    if request.method == 'GET':
        try:
            researcher = Researcher.objects.get(user=request.user)
            reports = get_dicts_with_filter(GlobalReport.objects,
                                            author=request.user)
            return JsonResponse(reports, safe=False)
        except ObjectDoesNotExist as error:
            return HttpResponseBadRequest(error)
    elif request.method == 'POST':
        try:
            researcher = Researcher.objects.get(user=request.user)
            req_data = json.loads(request.body.decode())
            title = req_data['title']
            content = req_data['content']

            report = GlobalReport(author=request.user,
                                  title=title,
                                  content=content)
            report.save()
            return HttpResponse(status=201)
        except ObjectDoesNotExist as error:
            return HttpResponseBadRequest(error)
    else:
        return HttpResponseNotAllowed(['GET', 'POST'])
コード例 #3
0
 def get_new_objective(self):
     solved_solutions = get_dicts_with_filter(Solution.objects,
                                              author_id=self.user.id)
     solved_styles = {1: 0, 2: 0, 3: 0}
     for solution in solved_solutions:
         problem = Problem.objects.get(pk=solution['problem_id'])
         solved_styles[problem.objective] += 1
     objective_ranks = sorted(solved_styles.items(), key=lambda x: x[1])
     return objective_ranks[0]
コード例 #4
0
def problem_input_view(request, problem_id=""):
    if request.method == "GET":
        problem_inputs = get_dicts_with_filter(ProblemInput.objects,
                                               problem__id=problem_id)
        if len(problem_inputs) == 0:
            return HttpResponseBadRequest()
        return JsonResponse(problem_inputs, status=200, safe=False)
    else:
        return HttpResponseNotAllowed(["GET"])
コード例 #5
0
def problem_output_view(request, problem_id=""):
    if request.method == "GET":
        problem_inputs = ProblemInput.objects.filter(problem__id=problem_id)
        problem_outputs = list(
            map(
                lambda input: get_dicts_with_filter(
                    ProblemOutput.objects, problem_input__id=input.id)[0],
                problem_inputs))
        if len(problem_outputs) == 0:
            return HttpResponseBadRequest()
        return JsonResponse(problem_outputs, status=200, safe=False)
    else:
        return HttpResponseNotAllowed(["GET"])
コード例 #6
0
ファイル: views.py プロジェクト: swsnu/swpp2020-team16
def group_members_view(request, group_id):
    if request.method == "GET":
        try:
            manager = Manager.objects.get(user=request.user)
            group = Group.objects.get(pk=group_id)
            if group.manager == manager:
                coders = get_dicts_with_filter(Coder.objects, group=group)
                return JsonResponse(coders, safe=False)
            else:
                return HttpResponseBadRequest()
        except ObjectDoesNotExist as error:
            return HttpResponseBadRequest(error)
    else:
        return HttpResponseNotAllowed(["GET"])
コード例 #7
0
ファイル: tests.py プロジェクト: swsnu/swpp2020-team16
    def test_get_problem_input(self):

        problem = Problem(desc="For test",
                          input_desc="For test",
                          output_desc="Fore test",
                          pid="ITP1_6_B",
                          objective=1)
        problem.save()

        problem_input_1 = ProblemInput(problem=problem, content="input str 1")
        problem_input_1.save()
        problem_input_2 = ProblemInput(problem=problem, content="input str 2")
        problem_input_2.save()
        problem_input_3 = ProblemInput(problem=problem, content="input str 3")
        problem_input_3.save()

        problem_output_1 = ProblemOutput(problem_input=problem_input_1,
                                         content="output str a")
        problem_output_1.save()
        problem_output_2 = ProblemOutput(problem_input=problem_input_2,
                                         content="output str b")
        problem_output_2.save()
        problem_output_3 = ProblemOutput(problem_input=problem_input_3,
                                         content="output str c")
        problem_output_3.save()

        problem_id = problem.to_dict()['id']
        response = self.client.get(f"/api/problem/{problem_id}/input/")
        self.assertEqual(response.status_code, 200)
        expected_response = json.dumps(
            get_dicts_with_filter(ProblemInput.objects,
                                  problem__id=problem_id))
        self.assertEqual(response.content.decode(), expected_response)

        response = self.client.get("/api/problem/1000/input/")
        self.assertEqual(response.status_code, 400)

        response = self.client.post("/api/problem/1/input/", {})
        self.assertEqual(response.status_code, 405)
コード例 #8
0
def solution_view(request, problem_id):
    if request.method == "GET":
        solutions = get_dicts_with_filter(Solution.objects,
                                          problem__id=problem_id,
                                          author_id=request.user.id)
        return JsonResponse(solutions, status=200, safe=False)
    elif request.method == "POST":
        try:
            problem = Problem.objects.get(pk=problem_id)
        except ObjectDoesNotExist:
            return HttpResponseBadRequest()
        try:
            req_data = json.loads(request.body.decode())
            code = req_data["code"]
            erase_cnt = int(req_data["erase_cnt"])
            elapsed_time = int(req_data["elapsed_time"])
            evaluation = int(req_data["evaluation"])

        except (KeyError, JSONDecodeError) as error:
            return HttpResponseBadRequest(error)

        solution = Solution(problem=problem,
                            code=code,
                            erase_cnt=erase_cnt,
                            elapsed_time=elapsed_time,
                            author_id=request.user.id,
                            evalutaion=evaluation)
        solution.save()

        SolutionReport(solution=solution,
                       author=request.user,
                       title=f"{problem.pid}_report",
                       code=code,
                       erase_cnt=erase_cnt,
                       elapsed_time=elapsed_time).save()

        return JsonResponse({"id": solution.pk}, status=201)
    else:
        return HttpResponseNotAllowed(["GET", "POST"])
コード例 #9
0
ファイル: views.py プロジェクト: swsnu/swpp2020-team16
def group_view(request):
    if request.method == "GET":
        try:
            manager = Manager.objects.get(user=request.user)
            return JsonResponse(get_dicts_with_filter(Group.objects,
                                                      manager=manager),
                                safe=False)
        except ObjectDoesNotExist as error:
            return HttpResponseBadRequest(error)
    elif request.method == "POST":
        try:
            manager = Manager.objects.get(user=request.user)
            body = request.body.decode()
            name = json.loads(body)["name"]
        except (KeyError, JSONDecodeError, ObjectDoesNotExist) as error:
            return HttpResponseBadRequest(error)
        if Group.objects.filter(name=name).count() != 0:
            return HttpResponse(status=409)
        group = Group(name=name, manager=manager)
        group.save()

        return JsonResponse(group.to_dict(), status=201)
    else:
        return HttpResponseNotAllowed(["GET", "POST"])