|
from flask import Flask
|
|
from flask import jsonify
|
|
from flask import request
|
|
import json
|
|
import pymysql
|
|
import sys
|
|
import mysubmit
|
|
import testcase
|
|
import my_check_logic_error
|
|
sys.path.append('../')
|
|
from PIPE.main import PIPEModel
|
|
|
|
|
|
app = Flask(__name__)
|
|
app.config['JSON_AS_ASCII'] = False
|
|
db = pymysql.connect(host='192.168.0.89',
|
|
port=3306,
|
|
user='root',
|
|
password='2020yunjisuan!',
|
|
db='shuishan',
|
|
charset='utf8')
|
|
|
|
|
|
@app.route('/get-problem-items/')
|
|
def get_problem_items():
|
|
db.ping(reconnect=True)
|
|
cursor = db.cursor()
|
|
cursor.execute("select id, title from problem")
|
|
data = cursor.fetchall()
|
|
pids = []
|
|
for d in data:
|
|
pids.append({"id": d[0], "title": d[1]})
|
|
pids = sorted(pids, key=lambda x: x.__getitem__('id'), reverse=False)
|
|
for i in range(len(pids)):
|
|
pids[i]['id'] = str(pids[i]['id'])
|
|
return jsonify(pids), 200
|
|
|
|
|
|
@app.route('/get-problem-description/<_id>/')
|
|
def get_problem_description(_id: str):
|
|
db.ping(reconnect=True)
|
|
cursor = db.cursor()
|
|
cursor.execute("select title, description, input_description, output_description, samples "
|
|
"from problem where id = %d" % int(_id))
|
|
des = cursor.fetchone()
|
|
# print(des)
|
|
title = '<div><strong style="font-size:22px;color:blue;">%s. %s</strong></div><br/>' % (_id, des[0])
|
|
description = '<div><strong style="font-size:20px;color:blue;">Description</strong></div><div>%s</div><br/>' % des[1]
|
|
input_description = '<div><strong style="font-size:20px;color:blue;">Input Description</strong></div><div>%s</div><br/>' \
|
|
% des[2]
|
|
output_description = '<div><strong style="font-size:20px;color:blue;">Output Description</strong></div><div>%s</div><br/>' \
|
|
% des[3]
|
|
samples = json.loads(des[-1].replace("\n", "\\n"))
|
|
samples_html = ''
|
|
for s in samples:
|
|
_input = s["input"].strip().replace(" ", " ").replace("\n", "<br/> ")
|
|
_output = s["output"].strip().replace(" ", " ").replace("\n", "<br/> ")
|
|
# _input = s["input"].strip().replace(" ", " ")
|
|
# _output = s["output"].strip().replace(" ", " ")
|
|
stra = '<div>'
|
|
strb = '<div style="width:100%;">'
|
|
strc = '<div style="display:inline-block;width:45%;vertical-align:top;"><strong style="font-size:20px;color:blue;">Input</strong></div>'
|
|
strd = '<div style="display:inline-block;width:2%;vertical-align:top;"></div>'
|
|
stre = '<div style="display:inline-block;width:45%;vertical-align:top;"><strong style="font-size:20px;color:blue;">Output</strong></div>'
|
|
strf = '</div><br/>'
|
|
strg = '<div style="width:100%;">'
|
|
strh = '<div style="display:inline-block;width:45%;height:100%;vertical-align:top;border:0.5px solid;border-radius:5px;"><br/> ' + _input + '<br/> </div>'
|
|
stri = '<div style="display:inline-block;width:2%;height:100%;vertical-align:top;"></div>'
|
|
strj = '<div style="display:inline-block;width:45%;height:100%;vertical-align:top;border:0.5px solid;border-radius:5px;"><br/> ' + _output + '<br/> </div>'
|
|
strk = '</div>'
|
|
strl = '</div><br/>'
|
|
samples_html = samples_html + stra + strb + strc + strd + stre + strf + strg + strh + stri + strj + strk + strl
|
|
return title + description + input_description + output_description + samples_html, 200
|
|
|
|
|
|
@app.route('/case_test/', methods=['POST'])
|
|
def case_test_():
|
|
pid: str = request.json.get("pid")
|
|
code: str = request.json.get("code")
|
|
with open('wulin.txt', 'w', encoding='utf-8', newline='') as f:
|
|
f.write(pid)
|
|
f.close()
|
|
results = testcase.submit_handler(code, pid, 'C')
|
|
|
|
|
|
|
|
return results, 200
|
|
|
|
|
|
@app.route('/check-logic-error/', methods=['POST'])
|
|
def check_logic_error():
|
|
pid: str = request.json.get("pid")
|
|
code: str = request.json.get("code")
|
|
# print(type(code))
|
|
# model = PIPEModel()
|
|
# model.load_savedModel('./PIPE/training/C2AE_model/cp-0015.ckpt')
|
|
# answer = model.predict_code(code=code)
|
|
# del model
|
|
# with open('wulin3.txt', 'w', encoding='utf-8', newline='') as f: # 设置文件对象
|
|
# f.write(answer) # 将字符串写入文件中
|
|
# f.close()
|
|
answer = my_check_logic_error.check_logic_error()
|
|
# results = 'check_logic_error'
|
|
return answer, 200
|
|
|
|
|
|
@app.route('/submit/', methods=['POST'])
|
|
def submit():
|
|
pid: str = request.json.get("pid")
|
|
code: str = request.json.get("code")
|
|
with open('wulin2.txt', 'w', encoding='utf-8', newline='') as f:
|
|
f.write(pid)
|
|
f.close()
|
|
results = mysubmit.submit_handler(code, pid, 'C')
|
|
|
|
# results = check_logic_error(pid, code)
|
|
return results, 200
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run()
|