diff options
| author | jwansek <eddie.atten.ea29@gmail.com> | 2022-05-21 22:38:52 +0100 | 
|---|---|---|
| committer | jwansek <eddie.atten.ea29@gmail.com> | 2022-05-21 22:38:52 +0100 | 
| commit | f2f734194c03dfff2024cf417c502515ddb7a855 (patch) | |
| tree | 745910a6206be1243187523bef355849dda0da77 /Smarker | |
| parent | abc7f067ff20bc2bd07d9236c30055549481547c (diff) | |
| download | Smarker-f2f734194c03dfff2024cf417c502515ddb7a855.tar.gz Smarker-f2f734194c03dfff2024cf417c502515ddb7a855.zip | |
Added running as an API
Diffstat (limited to 'Smarker')
| -rw-r--r-- | Smarker/database.py | 17 | ||||
| -rw-r--r-- | Smarker/requirements.txt | 2 | ||||
| -rw-r--r-- | Smarker/smarker.conf | 24 | 
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 | 
