2024-05-28 17:47:08 +03:00
|
|
|
|
import mariadb as mdb
|
|
|
|
|
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 'test_id' in args:
|
|
|
|
|
print("Content-Type: text/plain; charset=UTF-8\r\n\r\nВи не зазначили ідентифікатор тесту, до якого має залежати запитання\r\n")
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
|
if not 'title' in args:
|
|
|
|
|
print("Content-Type: text/plain; charset=UTF-8\r\n\r\nВи не зазначили текст запитання\r\n")
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
2024-06-01 13:49:13 +03:00
|
|
|
|
if (not 'mtime' in args) or (not args['mtime']):
|
2024-05-28 17:47:08 +03:00
|
|
|
|
args['mtime'] = 0
|
|
|
|
|
|
|
|
|
|
cur = db_connection.cursor()
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
cur.execute(f"INSERT INTO question ( title, mtime, tstID ) VALUES ( '{escape_sql_string(args['title'])}', {args['mtime']}, {args['test_id']} );")
|
|
|
|
|
db_connection.commit()
|
|
|
|
|
|
|
|
|
|
cur.execute(f"SELECT id FROM question ORDER BY id DESC;")
|
|
|
|
|
|
|
|
|
|
new_id = iter(cur).__next__()[0]
|
|
|
|
|
print(f"Location: /index.py?mode=view-question&id={new_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")
|