Exemplo n.º 1
0
    def analysis_group_average_rating_discipline(session, discipline):
        try:
            group_list = session.query(Group).all()
            student_control_all = session.query(Control).join(Student).join(Group).join(FinalGrade).join(Discipline).\
                filter(Discipline.name == discipline).all()
            discipline = session.query(Discipline).filter_by(name=discipline).first()
            id_discipline = discipline.id_discipline

            ls = []
            average_value = 0
            count = 0

            for i in group_list:
                for j in student_control_all:
                    if i.id_group == j.final_grade.id_group and id_discipline == j.final_grade.id_discipline:
                        average_value += j.value
                        count += 1
                if count != 0:
                    ls1 = []
                    ls1.append(i.number)
                    value = average_value / count
                    value = round(value, 2)
                    ls1.append(value)
                    ls.append(ls1)
                    average_value = 0
                    count = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 2
0
    def analysis_student_average_rating(session, student, stud_session, period):
        try:
            ls = []
            average_value = 0
            year_begin = YEAR
            count = 0

            if period == "За последний год":
                period_all = 1
            elif period == 'За последние 2 года':
                period_all = 2
            elif period == 'За последние 3 года':
                period_all = 3
            else:
                period_all = 4

            average_all = []
            for i in range(period_all):
                average_all1 = []
                average_all1.append(str(year_begin))
                average_all1.append(average_value)
                average_all1.append(count)
                average_all.append(average_all1)
                year_begin -= 1

            student_grade_all = session.query(Grade).join(Student).filter(Student.name == student). \
                order_by(Grade.date).all()

            for j in average_all:
                for i in student_grade_all:
                    if stud_session == "Все сессии" and i.date.month < 7 and int(j[0]) == i.date.year:
                        j[1] = j[1] + i.value
                        j[2] = j[2] + 1
                    elif stud_session == "Все сессии" and i.date.month > 7 and int(j[0]) - 1 == i.date.year:
                        j[1] = j[1] + i.value
                        j[2] = j[2] + 1
                    elif stud_session == "Летняя" and i.date.month < 7 and int(j[0]) == i.date.year:
                        j[1] = j[1] + i.value
                        j[2] = j[2] + 1
                    elif stud_session == "Зимняя" and i.date.month > 7 and int(j[0]) - 1 == i.date.year:
                        j[1] = j[1] + i.value
                        j[2] = j[2] + 1

            for j in average_all:
                if j[2] != 0:
                    ls1 = []
                    year = int(j[0])
                    year_value = str(year - 1) + '-' + str(year)
                    ls1.append(year_value)
                    value = j[1] / j[2]
                    value = round(value,2)
                    ls1.append(value)
                    ls.append(ls1)

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 3
0
    def analysis_student_rating_semester_discipline(session, group_number, discipline, max: bool=True):
        try:
            ls: list = []
            maxmin: int = 0

            student_list_all = session.query(Student).join(Group).filter(Group.number == group_number). \
                order_by(Student.name).all()
            student_grade_all = session.query(Grade).join(Student).join(Group).join(Work).join(Discipline). \
                filter(Group.number == group_number).filter(Discipline.name == discipline).all()

            for j in student_list_all:
                for i in student_grade_all:
                    if j.id_student == i.id_student:
                        if maxmin == 0:
                            maxmin: int = i.value
                        elif maxmin < i.value and max is True:
                            maxmin: int = i.value
                        elif maxmin > i.value and max is False:
                            maxmin: int = i.value

                ls1 = []
                value = maxmin
                value = round(value, 2)
                ls1.append(j.name)
                ls1.append(value)
                ls.append(ls1)
                maxmin = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 4
0
    def analysis_student_average_rating_discipline(session, group_number, discipline):
        try:
            ls = []
            average_value = 0
            count = 0

            student_list_all = session.query(Student).join(Group).filter(Group.number == group_number).\
                order_by(Student.name).all()
            student_grade_all = session.query(Grade).join(Student).join(Group).join(Work).join(Discipline).\
                filter(Group.number == group_number).filter(Discipline.name == discipline).all()

            for j in student_list_all:
                for i in student_grade_all:
                    if j.id_student == i.id_student:
                        average_value += i.value
                        count += 1

                ls1 = []
                value = average_value / count
                value = round(value, 2)
                ls1.append(j.name)
                ls1.append(value)
                ls.append(ls1)
                average_value = 0
                count = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 5
0
    def analysis_group_rating_semester_discipline(session, discipline, max:bool=True):
        try:
            ls: list = []
            maxmin: int = 0

            group_list = session.query(Group).all()
            student_grade_all = session.query(Grade).join(Student).join(Group).join(Work).join(Discipline).\
                filter(Discipline.name == discipline).all()

            for i in group_list:
                for j in student_grade_all:
                    if i.id_group == j.work.id_group:
                        if maxmin == 0:
                            maxmin: int = j.value
                        elif maxmin < j.value and max is True:
                            maxmin: int = j.value
                        elif maxmin > j.value and max is False:
                            maxmin: int = j.value

                if maxmin != 0:
                    ls1 = []
                    ls1.append(i.number)
                    ls1.append(maxmin)
                    ls.append(ls1)
                    maxmin = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 6
0
    def analysis_student_number_works_discipline(session, group_number, discipline):
        try:
            ls: list = []
            work: int = 0
            works: int = 0

            student_list_all = session.query(Student).join(Group).filter(Group.number == group_number). \
                order_by(Student.name).all()
            student_grade_all = session.query(Grade).join(Student).join(Group).join(Work).join(Discipline). \
                filter(Group.number == group_number).filter(Discipline.name == discipline).all()

            for j in student_list_all:
                for i in student_grade_all:
                    if j.id_student == i.id_student:
                        if i.value >= 25:
                            work += 1
                        works += 1

                ls1 = []
                ls1.append(j.name)
                ls1.append(work)
                ls1.append(works)
                ls.append(ls1)
                work = 0
                works = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 7
0
    def analysis_group_average_rating_discipline(session, discipline):
        try:
            ls: list = []
            average_value: int = 0
            count: int = 0

            group_list = session.query(Group).all()
            student_grade_all = session.query(Grade).join(Student).join(Group).join(Work).join(Discipline).\
                filter(Discipline.name == discipline).all()

            for i in group_list:
                for j in student_grade_all:
                    if i.id_group == j.work.id_group:
                        average_value += j.value
                        count += 1
                if count != 0:
                    ls1 = []
                    value = average_value / count
                    value = round(value, 2)
                    ls1.append(i.number)
                    ls1.append(value)
                    ls.append(ls1)
                    average_value = 0
                    count = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 8
0
    def analysis_student_average_rating_discipline(session, group_number, discipline):
        try:
            student_list_all = session.query(Student).join(Group).filter(Group.number == group_number). \
                order_by(Student.name).all()
            discipline = session.query(Discipline).filter_by(name=discipline).first()
            id_discipline = discipline.id_discipline
            student_control_all = session.query(Control).join(Student).join(Group).join(FinalGrade).join(Discipline). \
                filter(Group.number == group_number).all()

            ls = []

            for i in student_list_all:
                for j in student_control_all:
                    if i.id_student == j.id_student and id_discipline == j.final_grade.id_discipline:
                        ls1 = []
                        ls1.append(i.name)
                        ls1.append(j.value)
                        ls.append(ls1)
                        break

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 9
0
    def analysis_group_maxmin_discipline(session, discipline, max: bool =True):
        try:
            group_list = session.query(Group).all()
            student_control_all = session.query(Control).join(Student).join(Group).join(FinalGrade).join(Discipline).\
                filter(Discipline.name == discipline).all()
            discipline = session.query(Discipline).filter_by(name=discipline).first()
            id_discipline = discipline.id_discipline

            ls = []
            maxmin = 0

            for i in group_list:
                for j in student_control_all:
                    if i.id_group == j.final_grade.id_group and id_discipline == j.final_grade.id_discipline:
                        if maxmin == 0:
                            maxmin: int = j.value
                        elif maxmin < j.value and max is True:
                            maxmin: int = j.value
                        elif maxmin > j.value and max is False:
                            maxmin: int = j.value
                if maxmin !=0:
                    ls1 = []
                    ls1.append(i.number)
                    ls1.append(maxmin)
                    ls.append(ls1)
                    maxmin = 0

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 10
0
    def all(self, session, discipline, group_number):
        try:
            student_all: list = session.query(Student).join(Group).filter(Group.number == group_number).order_by(
                Student.name).all()

            work_all: list = session.query(Work).join(Group).join(Discipline).filter(
                Group.number == group_number).filter(Discipline.name == discipline).order_by(Work.id_work).all()

            ls = []

            for i in student_all:
                row = []
                row.append(i.name)

                for j in work_all:
                    grade = session.query(Grade).join(Student).join(Work). \
                        filter(Student.id_student == i.id_student).filter(Work.id_work == j.id_work).first()

                    if grade:
                        row.append(str(grade.value))
                        row.append(str(grade.date))
                    else:
                        row.append('')
                        row.append('')

                ls.append(row)

            ls = np.array(ls)

            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 11
0
    def delete(session, number):
        try:
            s = session.query(Group).filter_by(number=number)
            s.delete()
            session.commit()

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 12
0
 def add(session, number, specialty):
     try:
         s = session.query(Specialty).filter_by(name=specialty).first()
         id_specialty = s.id_specialty
         new_group = Group(number=number, id_specialty=id_specialty)
         session.add(new_group)
         session.flush()
     except Exception as e:
         bd_error()
Exemplo n.º 13
0
    def update(session, old_record_book, new_name, new_record_book):
        try:
            s = session.query(Student).filter_by(record_book=old_record_book)
            s.update({Student.record_book: new_record_book, Student.name: new_name})
            session.commit()

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 14
0
    def analysis_student_rating(session, student, stud_session, period, max: bool = True):
        try:
            if stud_session == 'Все сессии':
                student_control_all = session.query(Control).join(Student).filter(Student.name == student). \
                    order_by(Control.date).all()
            else:
                student_control_all = session.query(Control).join(Student).join(FinalGrade).join(SessionType).filter(
                    Student.name == student). \
                    filter(SessionType.name == stud_session).order_by(Control.date).all()

            ls = []
            average_value = 0
            year_begin = YEAR

            if period == "За последний год":
                period_all = 1
            elif period == 'За последние 2 года':
                period_all = 2
            elif period == 'За последние 3 года':
                period_all = 3
            else:
                period_all = 4

            average_all = []
            for i in range(period_all):
                average_all1 = []
                average_all1.append(str(year_begin))
                average_all1.append(average_value)
                average_all.append(average_all1)
                year_begin -= 1

            for j in average_all:
                for i in student_control_all:
                    if i.final_grade.type_final_grade.name == 'Экзамен':
                        if int(j[0]) == i.date.year:
                            if j[1] == 0:
                                j[1] = i.value
                            elif j[1] < i.value and max is True:
                                j[1] = i.value
                            elif j[1] > i.value and max is False:
                                j[1] = i.value

            for j in average_all:
                if j[1] != 0:
                    ls1 = []
                    year = int(j[0])
                    year_value = str(year - 1) + '-' + str(year)
                    ls1.append(year_value)
                    ls1.append(j[1])
                    ls.append(ls1)

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 15
0
    def analysis_group(session, group, stud_session, period):
        try:
            if stud_session == 'Все сессии':
                student_control_all = session.query(Control).join(Student).join(Group).join(FinalGrade). \
                    filter(Group.number == group).all()
            else:
                student_control_all = session.query(Control).join(Student).join(Group).join(FinalGrade).join(
                    SessionType). \
                    filter(Group.number == group).filter(SessionType.name == stud_session).all()

            ls = []
            average_value = 0
            year_begin = YEAR
            count = 0

            if period == "За последний год":
                period_all = 1
            elif period == 'За последние 2 года':
                period_all = 2
            elif period == 'За последние 3 года':
                period_all = 3
            else:
                period_all = 4

            average_all = []
            for i in range(period_all):
                average_all1 = []
                average_all1.append(str(year_begin))
                average_all1.append(average_value)
                average_all1.append(count)
                average_all.append(average_all1)
                year_begin -= 1

            for j in average_all:
                for i in student_control_all:
                    if i.final_grade.type_final_grade.name == 'Экзамен':
                        if int(j[0]) == i.date.year:
                            j[1] = j[1] + i.value
                            j[2] = j[2] + 1

            for j in average_all:
                if j[2] != 0:
                    ls1 = []
                    year = int(j[0])
                    year_value = str(year - 1) + '-' + str(year)
                    ls1.append(year_value)
                    value = j[1] / j[2]
                    value = round(value, 2)
                    ls1.append(value)
                    ls.append(ls1)

            ls = np.array(ls)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 16
0
    def add(session, name, record_book, group_number):
        try:
            g = session.query(Group).filter_by(number=group_number).first()
            id_group = g.id_group
            new_student = Student(name=name, record_book=record_book, id_group=id_group)
            session.add(new_student)
            session.flush()

        except Exception as e:
            bd_error()
Exemplo n.º 17
0
    def show_name(session):
        try:
            list_all = session.query(Group).all()
            ls = []
            for i in list_all:
                ls.append(i.number)
            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 18
0
    def update(session, old_number, number, specialty):
        try:
            s = session.query(Specialty).filter_by(name=specialty).first()
            id_specialty = s.id_specialty
            g = session.query(Group).filter_by(number=old_number)
            g.update({Group.number: number, Group.id_specialty: id_specialty})
            session.commit()

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 19
0
    def all_name(session, group_number: str):
        try:
            s = session.query(Student).join(Group).filter(Group.number == group_number).order_by(Student.name).all()
            ls = []
            for i in s:
                ls.append(i.name)

            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 20
0
    def show_all(session):
        try:
            list = session.query(Group).join(Specialty).order_by(Specialty.name).all()
            ls = []
            for i in list:
                ls1 = []
                ls1.append(i.specialty.name)
                ls1.append(i.number)

                ls.append(ls1)

            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 21
0
    def all(session, group_number: str):
        try:
            student_list: list = session.query(Student).order_by(Student.name).all()
            ls: list = []
            for i in student_list:
                if i.group.number == group_number:
                    ls1: list = []
                    ls1.append(i.name)
                    ls1.append(i.record_book)

                    ls.append(ls1)

            return ls

        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 22
0
    def lagging_students(self, session):
        try:
            final_grade_all = session.query(FinalGrade).join(SessionType).filter(SessionType.id_session_type == 2).all()
            ls = []
            for final_grade in final_grade_all:
                if final_grade.date.year == YEAR:
                    ls.append(final_grade)

            result = []
            for final_grade in ls:
                discipline_name = final_grade.discipline.name
                group_number = final_grade.group.number
                grade_all = self.all(session, discipline_name, group_number)

                work = Work()
                table_header: list = work.show_name(session, group_number, discipline_name, flag_header=True)

                flag = 0

                for grade in grade_all:
                    row = []
                    row.append(grade[0])
                    row.append(group_number)
                    row.append(discipline_name)
                    row.append('')
                    for g in range(1, len(grade), 2):
                        if grade[g] == '':
                            if row[3] == '':
                                row[3] = row[3] + table_header[g]
                            else:
                                row[3] = row[3] + ", " + table_header[g]
                            flag = 1
                    if flag:
                        result.append(row)
                    flag = 0

            result = np.array(result)
            return result
        except Exception as e:
            session.rollback()
            bd_error()
Exemplo n.º 23
0
    def show_name(session, group_number: str, discipline_name: str, flag_header=False):
        try:
            work_all: list = session.query(Work).join(Group).join(Discipline).filter(
                Group.number == group_number).filter(
                Discipline.name == discipline_name).order_by(Work.id_work).all()

            work_count: int = len(work_all)

            if flag_header:
                ls = []
                ls.append('ФИО студента')
            else:
                ls = []

            # Заполняем шапку таблицы
            for i in range(work_count):
                ls.append(work_all[i].name)
                if flag_header:
                    ls.append('Дата защиты')
            return ls

        except Exception as e:
            session.rollback()
            bd_error()