grapher/submission_editor.py

68 lines
2.6 KiB
Python
Raw Normal View History

2025-01-05 01:01:39 +01:00
import imgui
from model import *
class SubmissionEditor:
def __init__(self):
super().__init__()
self.current_lecture = 0
self.current_student = 0
self.points = 0
def __call__(self, clas: Class):
id = clas.id if clas else None
lectures = Lecture.select().where(Lecture.class_id == id) if id else None
students = Student.select().where(Student.class_id == id) if id else None
with imgui.begin("Submission Editor", False, imgui.WINDOW_NO_MOVE | imgui.WINDOW_NO_RESIZE | imgui.WINDOW_NO_COLLAPSE):
imgui.text("Add Submission")
if not lectures:
imgui.text("No Lectures queried")
return
if not students:
imgui.text("No Students queried")
return
_, self.current_lecture = imgui.combo("Lecture", self.current_lecture, [f"{l.title} ({l.points})" for l in lectures])
_, self.current_student = imgui.combo("Student", self.current_student, [f"{s.prename} {s.surname}" for s in students])
if self.points < 0:
self.points = 0
max = lectures[self.current_lecture].points
if self.points > max:
self.points = max
_, self.points = imgui.input_float("Points", self.points, format='%.1f', step=0.5, step_fast=1.0)
if imgui.button("Add"):
if not Submission.select().where(
Submission.student_id == students[self.current_student].id and
Submission.lecture_id == lectures[self.current_lecture].id
):
Submission.create(
student_id=students[self.current_student].id,
lecture_id=lectures[self.current_lecture].id,
points=self.points
)
imgui.same_line()
if imgui.button("Update"):
submission = Submission.select().where(
Submission.student_id == students[self.current_student].id and
Submission.lecture_id == lectures[self.current_lecture].id
).get()
submission.points = self.points
submission.save()
imgui.same_line()
if imgui.button("Delete"):
Submission.delete().where(
Submission.student_id == students[self.current_student].id and
Submission.lecture_id == lectures[self.current_lecture].id
).execute()