summaryrefslogtreecommitdiffstats
path: root/Smarker
diff options
context:
space:
mode:
authorjwansek <eddie.atten.ea29@gmail.com>2022-05-21 22:38:52 +0100
committerjwansek <eddie.atten.ea29@gmail.com>2022-05-21 22:38:52 +0100
commitf2f734194c03dfff2024cf417c502515ddb7a855 (patch)
tree745910a6206be1243187523bef355849dda0da77 /Smarker
parentabc7f067ff20bc2bd07d9236c30055549481547c (diff)
downloadSmarker-f2f734194c03dfff2024cf417c502515ddb7a855.tar.gz
Smarker-f2f734194c03dfff2024cf417c502515ddb7a855.zip
Added running as an API
Diffstat (limited to 'Smarker')
-rw-r--r--Smarker/database.py17
-rw-r--r--Smarker/requirements.txt2
-rw-r--r--Smarker/smarker.conf24
3 files changed, 36 insertions, 7 deletions
diff --git a/Smarker/database.py b/Smarker/database.py
index 37a44db..a3f77af 100644
--- a/Smarker/database.py
+++ b/Smarker/database.py
@@ -1,5 +1,6 @@
from dataclasses import dataclass
import pymysql
+import secrets
import yaml
@dataclass
@@ -54,7 +55,8 @@ class SmarkerDatabase:
CREATE TABLE students(
student_no VARCHAR(10) PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
- email VARCHAR(50) NOT NULL
+ email VARCHAR(50) NOT NULL,
+ apikey VARCHAR(64) NOT NULL
);
""")
cursor.execute("""
@@ -175,8 +177,8 @@ class SmarkerDatabase:
email (str): Student's email
"""
with self.__connection.cursor() as cursor:
- cursor.execute("INSERT INTO students VALUES (%s, %s, %s);",
- (student_id, name, email))
+ cursor.execute("INSERT INTO students VALUES (%s, %s, %s, %s);",
+ (student_id, name, email, secrets.token_urlsafe(32)))
self.__connection.commit()
def add_submission(self, student_id, assessment_name, report_yaml, files):
@@ -198,9 +200,9 @@ class SmarkerDatabase:
cursor.execute("""
INSERT INTO submitted_files
(submission_id, file_id, file_text)
- VALUES (%s, (SELECT file_id FROM assessment_file WHERE file_name = %s), %s);
+ VALUES (%s, (SELECT file_id FROM assessment_file WHERE file_name = %s AND assessment_name = %s), %s);
""", (
- submission_id, file_name, file_contents
+ submission_id, file_name, assessment_name, file_contents
))
self.__connection.commit()
@@ -240,6 +242,11 @@ class SmarkerDatabase:
cursor.execute("SELECT file_name FROM assessment_file WHERE assessment_name = %s;", (assessment_name, ))
return [i[0] for i in cursor.fetchall()]
+ def valid_apikey(self, key):
+ with self.__connection.cursor() as cursor:
+ cursor.execute("SELECT apikey FROM students WHERE apikey = %s", (key, ))
+ return key in [i[0] for i in cursor.fetchall()]
+
if __name__ == "__main__":
with SmarkerDatabase(host = "vps.eda.gay", user="root", passwd=input("Input password: "), db="Smarker", port=3307) as db:
# print(db.get_assessments_required_files("example"))
diff --git a/Smarker/requirements.txt b/Smarker/requirements.txt
index 3be9c36..af89c27 100644
--- a/Smarker/requirements.txt
+++ b/Smarker/requirements.txt
@@ -1,5 +1,3 @@
-# sudo apt-get install wkhtmltopdf
-# https://github.com/olivierverdier/python-latex-highlighting
Jinja2==3.0.3
misaka==2.1.1
Pygments==2.10.0
diff --git a/Smarker/smarker.conf b/Smarker/smarker.conf
new file mode 100644
index 0000000..3416564
--- /dev/null
+++ b/Smarker/smarker.conf
@@ -0,0 +1,24 @@
+[mysql]
+host = vps.eda.gay
+port = 3307
+user = root
+passwd = ************
+
+[tex]
+columns = 1
+show_full_docs = True
+show_source = True
+show_all_regex_occurrences = True
+show_all_run_output = True
+
+[md]
+show_full_docs = False
+show_source = False
+show_all_regex_occurrences = True
+show_all_run_output = False
+
+[txt]
+show_full_docs = True
+show_source = True
+show_all_regex_occurrences = True
+show_all_run_output = True \ No newline at end of file