Esempio n. 1
0
 def get(self, request, problem_code, revision_slug, testcase_id):
     testcase = get_git_object_or_404(
         TestCase, **{
             "problem": self.revision,
             "pk": testcase_id
         })
     if not testcase.output_file_generated():
         raise Http404()
     file_ = testcase.output_file.file
     file_.open()
     return FileResponse(file_, content_type="txt")
Esempio n. 2
0
 def post(self, request, problem_code, revision_slug, **kwargs):
     instance_pk = kwargs.get(self.instance_slug)
     instance = get_git_object_or_404(self.model, pk=instance_pk, problem=self.revision)
     code_file = getattr(instance, self.code_field_name)
     if "source_code" in request.POST:
         new_file = FileModel()
         new_file.file.save(code_file.name, ContentFile(request.POST["source_code"]))
         setattr(instance, self.code_field_name, new_file)
         instance.save()
         if isinstance(self, SourceFile):
             self.invalidate_compilation()
         messages.success(request, _("Saved successfully"))
     return HttpResponseRedirect(request.get_full_path())
Esempio n. 3
0
    def get(self, request, problem_code, revision_slug, subtask_id):
        subtask = get_git_object_or_404(
            Subtask, **{
                "problem": self.revision,
                "pk": subtask_id,
            })
        testcases = subtask.testcases.all()

        return render(request,
                      "problems/subtask_details.html",
                      context={
                          "subtask": subtask,
                          "testcases": testcases
                      })
Esempio n. 4
0
 def get(self, request, problem_code, revision_slug, **kwargs):
     instance_pk = kwargs.get(self.instance_slug)
     instance = get_git_object_or_404(self.model, pk=instance_pk, problem=self.revision)
     code_file = getattr(instance, self.code_field_name)
     file_ = code_file.file
     file_.open()
     code = file_.read()
     lang = getattr(instance, self.language_field_name) or detect_language(instance_pk)
     title = str(instance)
     return render(request, self.template_name, context={
         "code": code,
         "lang": lang,
         "title": title,
         "next_url": self.get_next_url(request, problem_code, revision_slug, instance)
     })
Esempio n. 5
0
    def get(self, request, problem_code, revision_slug, testcase_id):
        testcase = get_git_object_or_404(
            TestCase, **{
                "problem": self.revision,
                "pk": testcase_id,
            })
        validation_results = []
        for validator in testcase.validators:
            validation_results.append(
                validator.get_or_create_testcase_result(testcase))

        return render(request,
                      "problems/testcase_details.html",
                      context={
                          "testcase": testcase,
                          "validation_results": validation_results
                      })
Esempio n. 6
0
 def get_name(self, request, *args, **kwargs):
     return get_git_object_or_404(Validator,
                                  pk=kwargs.get('validator_id'),
                                  problem=self.revision).name
Esempio n. 7
0
 def get_name(self, request, *args, **kwargs):
     return get_git_object_or_404(Solution,
                                  pk=kwargs.get('solution_id'),
                                  problem=self.revision).name
Esempio n. 8
0
 def get_name(self, request, *args, **kwargs):
     return get_git_object_or_404(self.revision.checker_set,
                                  pk=kwargs.get('checker_id')).name
Esempio n. 9
0
 def get_name(self, request, *args, **kwargs):
     attachment_id = kwargs.get('attachment_id')
     return get_git_object_or_404(StatementAttachment, pk=attachment_id, problem=self.revision).name
Esempio n. 10
0
 def get_file(self, request, *args, **kwargs):
     return get_git_object_or_404(Grader,
                                  pk=kwargs.get('grader_id'),
                                  problem=self.revision).code.file