init commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
ROOT_DIR = Path(__file__).resolve().parent
|
||||
MEDIA_DIR = os.path.join(ROOT_DIR,'media')
|
||||
TEMP_DIR = os.path.join(ROOT_DIR,'temp')
|
||||
|
||||
con = sqlite3.connect("db.sqlite3")
|
||||
cur = con.cursor()
|
||||
k=0
|
||||
while k<3:
|
||||
k+=1
|
||||
res = cur.execute('''SELECT id,Problem_id,SrcFile
|
||||
FROM check_problem_resolvs
|
||||
WHERE Status='0';''')
|
||||
res = res.fetchone()
|
||||
if not res:
|
||||
break
|
||||
id = res[0]
|
||||
p_id = res[1]
|
||||
file_path = os.path.join(MEDIA_DIR,res[2])
|
||||
file_ext =file_path[file_path.rindex('.')+1:]
|
||||
if file_ext == 'py':
|
||||
rt_dir = os.path.join(TEMP_DIR,str(id))
|
||||
if not os.path.exists(rt_dir):
|
||||
os.mkdir(rt_dir)
|
||||
shutil.copy(file_path, rt_dir+'\\resolv.py')
|
||||
res = cur.execute(f'''SELECT id,Input,Output
|
||||
FROM check_problem_tests
|
||||
WHERE Problem_id={p_id}''')
|
||||
rows = res.fetchall()
|
||||
status = 2
|
||||
message='Все хорошо'
|
||||
for row in rows:
|
||||
with open(rt_dir+'\\INPUT.TXT','w') as f:
|
||||
f.write(row[1])
|
||||
try:
|
||||
proc = subprocess.call(f"python {rt_dir}\\resolv.py",
|
||||
cwd=rt_dir,
|
||||
timeout=5)
|
||||
except:
|
||||
status = 3
|
||||
message = "Выбили по таймауту"
|
||||
break
|
||||
if os.path.exists(rt_dir+'\\OUTPUT.TXT'):
|
||||
with open(rt_dir+'\\OUTPUT.TXT','r') as f:
|
||||
if f.read() != row[2]:
|
||||
status = 3
|
||||
message='Решение не верно'
|
||||
break
|
||||
else:
|
||||
status = 3
|
||||
message = "Нет выходного файла"
|
||||
break
|
||||
cur.execute(f'''UPDATE check_problem_resolvs
|
||||
SET Status='{status}', Message='{message}'
|
||||
WHERE id='{id}';''')
|
||||
con.commit()
|
||||
else:
|
||||
cur.execute(f'''UPDATE check_problem_resolvs
|
||||
SET Status='9'
|
||||
WHERE id='{id}';''')
|
||||
con.commit()
|
||||
con.close()
|
||||
Reference in New Issue
Block a user