57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
|
import mariadb as mdb
|
|||
|
import random
|
|||
|
import json
|
|||
|
import sys
|
|||
|
import os
|
|||
|
|
|||
|
from httputils import parse_query, escape_sql_string
|
|||
|
|
|||
|
def readfile(path):
|
|||
|
if os.path.exists(path):
|
|||
|
return open(path).read()
|
|||
|
|
|||
|
args = {"host": "127.0.0.1",
|
|||
|
"port": 3306,
|
|||
|
"user": "root",
|
|||
|
"password": "",
|
|||
|
"database": "test_holder"}
|
|||
|
|
|||
|
settings = json.loads(readfile("cgi/db-settings.json"))
|
|||
|
args.update(settings)
|
|||
|
|
|||
|
db_connection = mdb.connect(**args)
|
|||
|
|
|||
|
args = parse_query(os.environ['QUERY_STRING'])
|
|||
|
|
|||
|
if not 'id' in args:
|
|||
|
print("Content-Type: text/plain; charset=UTF-8\r\n\r\nВи не зазначили ідентифікатор запитання, до якого генеруватимуться варіанти відповідей\r\n")
|
|||
|
sys.exit(0)
|
|||
|
|
|||
|
if not 'amount' in args:
|
|||
|
print("Content-Type: text/plain; charset=UTF-8\r\n\r\nВи не зазначили кількість нових варіантів відповідей\r\n")
|
|||
|
sys.exit(0)
|
|||
|
|
|||
|
cur = db_connection.cursor()
|
|||
|
|
|||
|
try:
|
|||
|
chosen_the_right_one = False
|
|||
|
for i in range(int(args['amount'])):
|
|||
|
if not chosen_the_right_one:
|
|||
|
if int(args['amount']) == i + 1:
|
|||
|
correct = True
|
|||
|
else:
|
|||
|
correct = random.random() > 0.6
|
|||
|
else:
|
|||
|
correct = False
|
|||
|
|
|||
|
label = str(random.randint(0, 120))
|
|||
|
if correct:
|
|||
|
chosen_the_right_one = True
|
|||
|
|
|||
|
cur.execute(f"INSERT INTO response_option ( label, qstID, corct ) VALUES ( '{escape_sql_string(label)}', {args['id']}, {correct} );")
|
|||
|
db_connection.commit()
|
|||
|
|
|||
|
print(f"Location: /index.py?mode=view-question&id={args['id']}\r\n\r\n")
|
|||
|
except Exception as e:
|
|||
|
print(f"Content-Type: text/plain; charset=UTF-8\r\n\r\nНе вдалося згенерувати варіанти відповідей ({e})\r\n")
|