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

View File

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