summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Yin <fred.yin@sjtu.edu.cn>2021-10-10 13:23:38 +0800
committerFrederick Yin <fred.yin@sjtu.edu.cn>2021-10-10 13:23:38 +0800
commitdfe4b717a9bd39d8cd1f9d603e648921e1393903 (patch)
tree5c2eb9b9ea22e5c1cf5d7f0d7f18e551203e4e2f
parent799f16f0e53382f4ecd36d8a5c7bff5afaccdd9f (diff)
Leningrade: because grades belong to everyone
-rw-r--r--.gitignore1
-rw-r--r--config.py.example21
-rw-r--r--leningrade.py45
3 files changed, 67 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 8ec0782..41da7ec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@ pgroups.json
scores.json
settings.py
*.csv
+config.py
diff --git a/config.py.example b/config.py.example
new file mode 100644
index 0000000..9b12328
--- /dev/null
+++ b/config.py.example
@@ -0,0 +1,21 @@
+"""GENERIC"""
+HGROUP_NO = 1
+HGROUP_MEMBERS = [("521370910000", "Vladimir Lenin")]
+HGROUP = {f"hgroup-{HGROUP_NO}": HGROUP_MEMBERS}
+LANGUAGE = "matlab"
+HOMEWORK_NO = 2
+EXERCISES = [1, 2, 3, 4, 5, 6]
+# TODO: figure out how to reliably obtain these two
+MANDATORY_FILES = [f"ex{n}.m" for n in EXERCISES]
+OPTIONAL_FILES = []
+
+"""GITEA"""
+# trailing slash not allowed
+GITEA_API_BASE = "https://focs.ji.sjtu.edu.cn/git/api/v1"
+GITEA_ORG = "ENGR151-21"
+GITEA_TOKEN = ""
+
+"""JOJ"""
+JOJ_COURSE_ID = "vg151_fall_2021_manuel"
+JOJ_SESSION_ID = ""
+JOJ_HOMEWORK_ID = "615542bfb3c06a0006f45dd6" # h2
diff --git a/leningrade.py b/leningrade.py
new file mode 100644
index 0000000..af72cd6
--- /dev/null
+++ b/leningrade.py
@@ -0,0 +1,45 @@
+from worker import GitWorker, GiteaWorker, JOJWorker
+from config import *
+
+
+class Arguments:
+ indv = True
+ dir = True
+ group = True
+ joj = True
+ tidy = True
+ score = True
+ hw = HOMEWORK_NO
+ rejudge = HGROUP_NO
+
+
+args = Arguments()
+
+gitWorker = GitWorker(args, HGROUP, None, LANGUAGE, MANDATORY_FILES, OPTIONAL_FILES, GITEA_ORG)
+giteaWorker = GiteaWorker(args, GITEA_API_BASE, GITEA_ORG, GITEA_TOKEN, HGROUP)
+jojWorker = JOJWorker(args, JOJ_COURSE_ID, JOJ_SESSION_ID, HGROUP)
+
+JOJ_INFO = {
+ "homeworkID": JOJ_HOMEWORK_ID,
+ "lang": LANGUAGE,
+ "problemInfo": [
+ # filename, problem ID, # of test cases
+ ("ex2.m", "61553cffb3c06a0006f45da3", 10),
+ ("ex4.m", "61553e5fb3c06a0006f45da9", 10),
+ ("ex5.m", "61553f8cb3c06a0006f45db2", 10),
+ ("ex6.m", "6155414cb3c06a0006f45dc7", 10),
+ ],
+}
+
+# individual
+indvScores = gitWorker.checkIndv()
+print(indvScores)
+# group
+groupScores = gitWorker.checkGroup()
+tmpScores = giteaWorker.checkReview()
+for key in groupScores.keys():
+ groupScores[key] = {**groupScores.get(key, {}), **tmpScores.get(key, {})}
+print(groupScores)
+# JOJ
+jojScores = jojWorker.checkGroupJOJ(JOJ_INFO)
+print(jojScores)