apply languages

This commit is contained in:
Egor Matveev 2022-02-16 23:45:08 +03:00
parent 2948c8252e
commit 0b3044350b
2 changed files with 21 additions and 8 deletions

View File

@ -44,6 +44,8 @@ def available(request):
return JsonResponse({"id": None})
solution.result = "Testing"
solution.save()
checker.testing_solution = solution
checker.save()
with TemporaryDirectory() as tempdir:
with ZipFile(join(tempdir, "package.zip"), 'w') as zip_file:
for sf in SolutionFile.objects.filter(solution=solution):
@ -68,6 +70,8 @@ def set_result(request):
return JsonResponse({"status": "incorrect solution"}, status=403)
solution.result = result
solution.save()
checker.testing_solution = None
checker.save()
return JsonResponse({"status": True})
except ObjectDoesNotExist:
return JsonResponse({"status": "incorrect token"}, status=403)

View File

@ -1,5 +1,5 @@
from multiprocessing import Process
from os import getenv
from os import getenv, environ
from os.path import join
from tempfile import TemporaryDirectory
from time import sleep
@ -10,6 +10,8 @@ from requests import get
from language import languages
from testers import *
host = "http://dev.sprinthub.ru/"
def process_solution(path, data, language_id, solution_id, timeout):
with open(join(path, "package.zip"), 'wb') as fs:
@ -26,13 +28,17 @@ def process_solution(path, data, language_id, solution_id, timeout):
def poll(token):
while True:
print(get("http://127.0.0.1:8000/checker/status", params={"token": token}).json())
sleep(2)
correct_token = True
while correct_token:
code = get(f"{host}checker/status", params={"token": token}).status_code
if code != 200:
correct_token = False
else:
sleep(2)
def main():
request = get("http://127.0.0.1:8000/checker/get_dynamic", params={"token": getenv("TOKEN")})
request = get(f"{host}checker/get_dynamic", params={"token": getenv("TOKEN")})
if request.status_code != 200:
print("Error happened: " + request.json()['status'])
exit(1)
@ -40,7 +46,7 @@ def main():
p = Process(target=poll, args=(dynamic_token,))
p.start()
while True:
data = get("http://127.0.0.1:8000/checker/available", params={"token": dynamic_token})
data = get(f"{host}checker/available", params={"token": dynamic_token})
if data.status_code == 200:
sleep(2)
continue
@ -53,14 +59,17 @@ def main():
int(data.headers['solution_id']),
int(data.headers['timeout']),
)
get("http://127.0.0.1:8000/checker/set_result", params={
get(f"{host}checker/set_result", params={
"token": dynamic_token,
"solution_id": data.headers['solution_id'],
"result": result
})
elif data.status_code == 403:
print("token removed")
exit(1)
else:
print("unknown status")
exit(1)
if __name__ == '__main__':