Skip to content

Commit 7213ac2

Browse files
authored
feat: show grading progress (#213)
lgtm
1 parent b7d6fef commit 7213ac2

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

seminare/organizer/tables.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,38 @@ def get_links(
7070

7171

7272
class ProblemTable(Table):
73-
fields = ["number", "name", "points_publicly_visible"]
73+
fields = ["number", "name", "grading_status", "points_publicly_visible"]
7474
labels = {
7575
"name": "Názov",
7676
"number": "č.",
77+
"grading_status": "Opravené",
7778
"points_publicly_visible": "Zverejnené body",
7879
}
7980
templates = {"points_publicly_visible": "tables/fields/boolean.html"}
8081

82+
def get_grading_status_content(self, object: Problem):
83+
from seminare.submits.models import FileSubmit
84+
85+
if FileSubmit not in object.accepted_submit_classes:
86+
return "-"
87+
88+
rule_engine = object.problem_set.get_rule_engine()
89+
enrollments = rule_engine.get_enrollments()
90+
91+
submits = rule_engine.get_enrollments_problems_effective_submits(
92+
FileSubmit, enrollments, [object]
93+
).values_list("enrollment_id", "score")
94+
95+
total = set()
96+
graded = set()
97+
98+
for eid, score in submits:
99+
total.add(eid)
100+
if score is not None:
101+
graded.add(eid)
102+
103+
return f"{len(graded)} / {len(total)}" if total else "0 / 0"
104+
81105
def get_links(
82106
self, object: Problem, context: dict
83107
) -> list[tuple[str, str] | tuple[str, str, str]]:

0 commit comments

Comments
 (0)