Esempio n. 1
0
    def save(self):
        first_name_str = self.first_name_entry.get()
        last_name_str = self.last_name_entry.get()

        if len(first_name_str) == 0 and len(last_name_str) == 0:
            msb.showwarning("Błąd", "Nie podano imienia i nazwiska.")
            return
        elif len(first_name_str) == 0:
            msb.showwarning("Błąd", "Nie podano imienia.")
            return
        elif len(first_name_str) == 0:
            msb.showwarning("Błąd", "Nie podano nazwiska.")
            return

        if len(first_name_str) > 20 and len(last_name_str) > 20:
            msb.showwarning("Błąd", "Wprowadzone nazwy są za długie.")
            return
        elif len(first_name_str) > 20:
            msb.showwarning("Błąd", "Wprowadzone imie jest za długie.")
            return
        elif len(last_name_str) > 20:
            msb.showwarning("Błąd", "Wprowadzone nazwisko jest za długie.")
            return

        sesja.query(Student).filter(Student.id == self.student.id).update({
            Student.first_name:
            first_name_str,
            Student.last_name:
            last_name_str
        })
        sesja.commit()
        self.master.go_back()
Esempio n. 2
0
    def save(self):

        value_str = self.value_entry.get()
        if len(value_str) == 0:
            msb.showwarning("Błąd", "Nie podano wartości oceny.")
            return

        try:
            new_grade_value = float(value_str)
        except ValueError:
            msb.showwarning("Błąd",
                            "Wprowadzona wartość oceny jest nieprawidłowa.")
            return

        if new_grade_value > 5 or new_grade_value < 2 or not (new_grade_value *
                                                              2).is_integer():
            msb.showwarning("Błąd",
                            "Wprowadzona wartość oceny jest nieprawidłowa.")
            return

        grade_weight = self.scale.get()
        sesja.query(Grade).filter(Grade.id == self.grade.id).update({
            Grade.value:
            new_grade_value,
            Grade.grade_category_id:
            self.category_choice,
            Grade.weight:
            grade_weight
        })
        sesja.commit()
        self.master.go_back()
Esempio n. 3
0
 def delete_subject_here(self):
     if not self.group_choice:
         msb.showinfo(None, "Nie wybrano przedmiotu do usunięcia.")
         return
     if msb.askokcancel(None, ("Na pewno chcesz usunąć?")):
         sesja.query(SubjectGroup).filter(SubjectGroup.group_id == self.group_choice.id, SubjectGroup.subject_id == self.subject.id).delete()
         self.load_group()
         self.group_choice = 0
         sesja.commit()
Esempio n. 4
0
 def load_group(self):
     i = 0
     self.group_list.delete(0, tk.END)
     self.group_list_object = []
     for group in sesja.query(Group).all():
         if sesja.query(SubjectGroup).filter(SubjectGroup.subject_id == self.subject.id, SubjectGroup.group_id == group.id).scalar():
             self.group_list.insert(i, group.name)
             self.group_list_object.append(group)
             i+=1
Esempio n. 5
0
 def try_delete(self):
     if not self.student_choice:
         msb.showinfo(None, "Nie wybrano studenta do usunięcia.")
         return
     if msb.askokcancel(None, ("Na pewno chcesz usunąć?")):
         sesja.query(Student).filter(
             Student.id == self.student_choice.id).delete()
         self.load_student()
         self.student_choice = 0
         sesja.commit()
Esempio n. 6
0
 def try_delete(self):
     if not self.grade_choice:
         msb.showinfo(None, "Nie wybrano oceny do usunięcia.")
         return
     if msb.askokcancel(None, ("Na pewno chcesz usunąć?")):
         sesja.query(Grade).filter(
             Grade.id == self.grade_choice.id).delete()
         self.load_grade()
         self.grade_choice = 0
         sesja.commit()
Esempio n. 7
0
 def delete_subject(self):
     if not self.choice:
         msb.showinfo(None, "Nie wybrano przedmiotu do usunięcia.")
         return
     if msb.askokcancel(None, ("Na pewno chcesz usunąć?")):
         sesja.query(Subject).filter(
             Subject.name == self.choice.name).delete()
         self.load_subject()
         self.choice = 0
         sesja.commit()
Esempio n. 8
0
    def __init__(self, master, subject):
        tk.Frame.__init__(self, master)
        tk.Label(self, text="Zmień nazwę przedmiotu: ",
                 font=("Calibri", 12)).grid(row=0,
                                            columnspan=2,
                                            sticky=N + E + S + W)
        self.name_entry = tk.Entry(self, font=("Calibri", 12))
        self.name_entry.insert(0, subject.name)
        self.name_entry.grid(row=1, columnspan=2, sticky=N + E + S + W)
        self.master = master
        self.subject = subject

        self.all_groups = []
        self.groups_checkbox = []
        self.groups_checkbox_state = []

        if len(self.all_groups) > 0:
            tk.Label(self,
                     text="Wybierz przynależne grupy: ",
                     font=("Calibri", 12)).grid(row=2,
                                                columnspan=2,
                                                sticky=N + E + S + W)

        i = 0
        for group in sesja.query(Group).all():
            var = tk.IntVar()
            self.all_groups.append(group)
            self.groups_checkbox.append(
                tk.Checkbutton(self,
                               text=group.name,
                               variable=var,
                               font=("Calibri", 12)))
            if sesja.query(SubjectGroup.group_id).filter(
                    SubjectGroup.subject_id == subject.id,
                    SubjectGroup.group_id == group.id).scalar():
                self.groups_checkbox[i].select()
            self.groups_checkbox_state.append(var)
            i += 1

        i = 3
        for group in self.groups_checkbox:
            group.grid(row=i, columnspan=2, sticky=N + S + W)
            i += 1

        tk.Button(self, text="✔ Zapisz", command=self.save,
                  height=2).grid(row=i, column=1, sticky=N + E + S + W, pady=3)
        tk.Button(self,
                  text="⬅ Wróć",
                  command=lambda: master.go_back(),
                  height=2).grid(row=i, column=0, sticky=N + E + S + W, pady=3)

        for i in range(0, 6):
            self.grid_columnconfigure(i, weight=2, uniform=True)
Esempio n. 9
0
 def load_grade(self):
     self.grade_list.delete(0, tk.END)
     self.grade_list_obj = []
     i = 0
     for grade in sesja.query(Grade).filter(
             Grade.student_id == self.student.id,
             Grade.subject_id == self.subject.id).all():
         category_name = sesja.query(GradeCategory.name).filter(
             GradeCategory.id == grade.grade_category_id).one()
         self.grade_list.insert(
             i, (str(grade.value) + " (" + category_name[0] + ", waga " +
                 str(grade.weight) + ")"))
         self.grade_list_obj.append(grade)
         i += 1
    def __init__(self, master, group, subject):
        tk.Frame.__init__(self, master)
        label_1 = tk.Label(self, text="Wybierz kategorię i wagę oceny", font=("Calibri", 12))
        label_1.grid(row = 0, columnspan = 4, sticky=N + E + S + W)
        self.group = group
        self.subject = subject
        self.master = master

        self.cb_value = tk.StringVar()     
        self.combobox_grade_categories = ttk.Combobox(self, textvariable = self.cb_value, state="readonly", font=("Calibri", 12))
        self.combobox_grade_categories.grid(row = 1, columnspan=4, sticky=N + E + S + W)
        grade_categories_obj = []
        grade_categories = []
        for category in sesja.query(GradeCategory).all():
            grade_categories_obj.append(category)
            grade_categories.append(category.name)
        self.combobox_grade_categories['values'] = grade_categories
        self.combobox_grade_categories.current(0)
        self.category_choice = 1
        self.combobox_grade_categories.bind("<<ComboboxSelected>>", self.select_category)

        self.scale = Scale(self, from_ = 1, to = 10,  orient = HORIZONTAL, font=("Calibri", 12), tickinterval= 9)
        self.scale.grid(row = 2, columnspan = 4, sticky=N + E + S + W)  

        tk.Label(self, text="Studenci: ", font=("Calibri", 12)).grid(row = 3, column = 0, columnspan = 3, sticky=N + S + W)
        tk.Label(self, text="Oceny: ", font=("Calibri", 12)).grid(row = 3, column = 3, sticky=N + E + S + W)

        self.student_obj_list = []
        for student in sesja.query(Student).filter(Student.group_id == self.group.id).order_by(Student.last_name, Student.first_name).all():
            self.student_obj_list.append(student)

        self.y = len(self.student_obj_list)
        self.cells = []

        for i in range(0, self.y):
            cell = [0, 1]
            cell[0] = tk.Entry(self, width=40, font=("Calibri", 12))
            cell[0].insert(tk.END, (self.student_obj_list[i].last_name + " " + self.student_obj_list[i].first_name))
            cell[0].configure(state='disabled')
            cell[0].grid(row = i + 4, column = 0, columnspan=3, sticky=N + E + S + W)
            cell[1] = tk.Entry(self, width=10, font=("Calibri", 12))
            cell[1].grid(row = i + 4, column = 3, sticky=N + E + S + W)
            self.cells.append(cell)

        save_button = tk.Button(self, text="✔ Zapisz", command=self.save, font=("Calibri", 10)).grid(row = self.y + 4, column = 2, columnspan=2, sticky=N + E + S + W, pady=3)
        back_button = tk.Button(self, text="⬅ Wróć", command=lambda: master.go_back(), font=("Calibri", 10)).grid(row = self.y + 4, column = 0, columnspan=2, sticky=N + E + S + W, pady=3)

        for i in range(0, 4):
            self.grid_columnconfigure(i, weight = 1, uniform=True)
Esempio n. 11
0
 def save(self):
     name_str = self.name_entry.get()
     if len(name_str) == 0:
         msb.showwarning("Błąd", "Nie wprowadzono nazwy grupy.")
         return
     elif len(name_str) > 100:
         msb.showwarning("Błąd", "Wprowadzona nazwa jest za długa.")
         return
     if name_str != self.group.name:
         if sesja.query(Group.name).filter_by(name=name_str).scalar():
             msb.showwarning("Błąd", "Podana nazwa jest już zajęta.")
             return
     sesja.query(Group).filter(Group.id == self.group.id).update(
         {Group.name: name_str})
     sesja.commit()
     self.master.go_back()
Esempio n. 12
0
 def save(self):
     name_str = self.name_entry.get()
     if len(name_str) == 0:
         msb.showwarning("Błąd", "Nie wprowadzono nazwy grupy.")
         return
     elif len(name_str) > 100:
         msb.showwarning("Błąd", "Wprowadzona nazwa jest za długa.")
         return
     if sesja.query(Group.name).filter_by(name=name_str).scalar():
         msb.showwarning("Błąd", "Podana nazwa jest już zajęta.")
     else:
         sesja.add(Group(name=name_str))
         id = sesja.query(Group.id).filter(Group.name == name_str).one()
         sesja.add(SubjectGroup(group_id=id[0], subject_id=self.subject.id))
         sesja.commit()
         self.master.go_back()
Esempio n. 13
0
 def load_subject(self):
     self.subject_list.delete(0, tk.END)
     self.subject_obj_list = []
     i = 0
     for subject in sesja.query(Subject).order_by(Subject.name).all():
         self.subject_obj_list.append(subject)
         self.subject_list.insert(i, subject.name)
         i += 1
Esempio n. 14
0
 def load_student(self):
     self.student_list.delete(0, tk.END)
     self.student_list_obj = []
     i = 0
     for student in sesja.query(Student).filter(
             Student.group_id == self.group.id).order_by(
                 Student.last_name, Student.first_name).all():
         self.student_list.insert(
             i, (student.last_name + " " + student.first_name))
         self.student_list_obj.append(student)
         i += 1
Esempio n. 15
0
    def save(self):
        name_str = self.name_entry.get()
        if len(name_str) == 0:
            msb.showwarning("Błąd", "Nie wprowadzono nazwy przedmiotu.")
            return
        elif len(name_str) > 100:
            msb.showwarning("Błąd", "Wprowadzona nazwa jest za długa.")
            return
        if name_str != self.subject.name:
            exists = sesja.query(
                Subject.name).filter_by(name=name_str).scalar()
            if exists:
                msb.showwarning("Błąd", "Podana nazwa jest już zajęta.")
                return
        sesja.query(Subject).filter(Subject.id == self.subject.id).update(
            {Subject.name: name_str})

        sesja.query(SubjectGroup.group_id).filter(
            SubjectGroup.subject_id == self.subject.id).delete()
        for group in self.get_selected_groups():
            sesja.add(
                SubjectGroup(subject_id=self.subject.id, group_id=group.id))
        sesja.commit()
        self.master.go_back()
Esempio n. 16
0
 def save(self):
     name_str = self.name_entry.get()
     if len(name_str) == 0:
         msb.showwarning("Błąd", "Nie wprowadzono nazwy przedmiotu.")
         return
     elif len(name_str) > 100:
         msb.showwarning("Błąd", "Wprowadzona nazwa jest za długa.")
         return
     exists = sesja.query(Subject.name).filter_by(name=name_str).scalar()
     if exists:
         msb.showwarning("Błąd", "Podana nazwa jest już zajęta.")
     else:
         sesja.add(Subject(name=name_str,
                           groups=self.get_selected_groups()))
         sesja.commit()
         self.master.go_back()
Esempio n. 17
0
    def __init__(self, master, subject, group):
        tk.Frame.__init__(self, master)
        label = tk.Label(self,
                         text=(" Przedmiot: " + subject.name + "\nGrupa: " +
                               group.name),
                         font=("Calibri", 20),
                         anchor='w')
        label.grid(row=0, sticky=N + E + S + W, columnspan=6)
        self.group = group
        self.subject = subject

        self.students_obj_list = []
        for student in sesja.query(Student).filter(
                Student.group_id == self.group.id).order_by(
                    Student.last_name, Student.first_name).all():
            self.students_obj_list.append(student)

        self.grade_categories_list = []
        for grade_category in sesja.query(GradeCategory).all():
            self.grade_categories_list.append(grade_category)

        y = len(self.students_obj_list) + 2
        x = len(self.grade_categories_list) + 1

        for i in range(2, y):
            e = tk.Text(self, height=2, wrap='word', font=("Calibri", 12))
            e.grid(row=i, column=0, sticky=N + E + S + W)
            e.insert(tk.END, (self.students_obj_list[i - 2].last_name + " " +
                              self.students_obj_list[i - 2].first_name))
            e.config(state='disabled')

        for i in range(1, x):
            e = tk.Text(self, height=1, font=("Calibri", 12))
            e.grid(row=1, column=i, sticky=N + E + S + W)
            e.insert(tk.END, (self.grade_categories_list[i - 1].name))
            e.config(state='disabled')

        for i in range(1, x):
            for j in range(2, y):
                e = tk.Text(self, height=2, wrap='word')
                e.grid(row=j, column=i, sticky=N + E + S + W)
                grades = []
                for grade in sesja.query(Grade.value).filter(
                        Grade.student_id == self.students_obj_list[j - 2].id,
                        Grade.grade_category_id == self.grade_categories_list[
                            i - 1].id,
                        Grade.subject_id == self.subject.id).all():
                    grades.append(grade)
                e.insert(tk.END, grades)
                e.config(state='disabled')

        average_label = tk.Text(self, height=1, width=10)
        average_label.grid(column=x, row=1, sticky=N + E + S + W)
        average_label.insert(tk.END, "Średnia")
        average_label.config(state='disabled')
        for i in range(2, y):
            e = tk.Text(self, height=2)
            e.grid(row=i, column=x, sticky=N + E + S + W)
            student_grades = []
            iAverage = 0.0
            iSum = 0.0
            iQuantity = 0
            for grade in sesja.query(Grade).filter(
                    Grade.student_id == self.students_obj_list[i - 2].id,
                    Grade.subject_id == self.subject.id):
                iSum += grade.value * grade.weight
                iQuantity += grade.weight
            if iQuantity > 0:
                iAverage = round((iSum / iQuantity), 2)
            e.insert(tk.END, iAverage)
            e.config(state='disabled')

        for i in range(0, x):
            self.grid_columnconfigure(i, weight=2, uniform=True)
        self.grid_columnconfigure(x, weight=1, uniform=True)

        empty_label = tk.Label(self)
        empty_label.grid(row=y + 2, column=x)
        edit_students_button = tk.Button(
            self,
            text="✏ Edytuj listę studentów",
            height=2,
            command=lambda: master.navigate_to(StudentChoose, group))
        edit_students_button.grid(row=y + 3,
                                  column=0,
                                  sticky=N + E + S + W,
                                  pady=3,
                                  padx=3)
        edit_grades_button = tk.Button(
            self,
            text="➡ Zarządzaj ocenami",
            height=2,
            command=lambda: master.navigate_to(StudentChoose, group, subject))
        edit_grades_button.grid(row=y + 3,
                                column=1,
                                sticky=N + E + S + W,
                                pady=3,
                                padx=3)
        add_series_button = tk.Button(
            self,
            text="➕ Dodaj serię ocen",
            height=2,
            command=lambda: master.navigate_to(AddGradeSeries, group, subject))
        add_series_button.grid(row=y + 3,
                               column=2,
                               sticky=N + E + S + W,
                               pady=3,
                               padx=3)
        back_button = tk.Button(self,
                                text="⬅ Wróć",
                                command=lambda: master.go_back(),
                                height=2)
        back_button.grid(row=y + 4,
                         column=0,
                         sticky=N + E + S + W,
                         pady=3,
                         padx=3)
Esempio n. 18
0
    def __init__(self, master, student, subject):
        tk.Frame.__init__(self, master)
        tk.Label(self, text="Dodaj ocenę",
                 font=("Calibri", 14)).grid(row=0, columnspan=2)
        tk.Label(self,
                 text="Wybierz kategorię i wagę oceny",
                 font=("Calibri", 12)).grid(row=1,
                                            columnspan=2,
                                            sticky=N + E + S + W)
        self.student = student
        self.subject = subject
        self.master = master

        self.cb_value = tk.StringVar()
        self.combobox_grade_categories = ttk.Combobox(
            self,
            textvariable=self.cb_value,
            state="readonly",
            font=("Calibri", 12))
        self.combobox_grade_categories.grid(row=2,
                                            columnspan=2,
                                            sticky=N + E + S + W)
        grade_categories_obj = []
        grade_categories = []
        for category in sesja.query(GradeCategory).all():
            grade_categories_obj.append(category)
            grade_categories.append(category.name)
        self.combobox_grade_categories['values'] = grade_categories
        self.combobox_grade_categories.current(0)
        self.category_choice = 1
        self.combobox_grade_categories.bind("<<ComboboxSelected>>",
                                            self.select_category)

        self.scale = Scale(self,
                           from_=1,
                           to=10,
                           orient=HORIZONTAL,
                           font=("Calibri", 12),
                           tickinterval=9)
        self.scale.grid(row=4, columnspan=2, sticky=N + E + S + W)

        tk.Label(self, text="Podaj ocenę",
                 font=("Calibri", 12)).grid(row=5,
                                            columnspan=2,
                                            sticky=N + E + S + W)
        self.value_entry = tk.Entry(self, font=("Calibri", 12))
        self.value_entry.grid(row=6, columnspan=2, sticky=N + E + S + W)

        tk.Button(self,
                  text="✔ Zapisz",
                  command=self.save,
                  font=("Calibri", 10)).grid(row=7,
                                             column=1,
                                             sticky=N + E + S + W,
                                             pady=3)
        tk.Button(self,
                  text="⬅ Wróć",
                  command=lambda: master.go_back(),
                  font=("Calibri", 10)).grid(row=7,
                                             column=0,
                                             sticky=N + E + S + W,
                                             pady=3)

        for i in range(0, 2):
            self.grid_columnconfigure(i, weight=2, uniform=True)
 def select_category(self, event):
     str_choice = self.cb_value.get()
     int_choice = sesja.query(GradeCategory.id).filter(GradeCategory.name == str_choice).one()
     self.category_choice = int_choice[0]