67 lines
2.7 KiB
Python
67 lines
2.7 KiB
Python
from imgui_bundle 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()
|