async def fill_grades1(message: Message, state: FSMContext):
    from urllib import request
    import config
    try:
        file_info = await bot.get_file(message.document.file_id)
        journal = file_info.file_path
        file_name = message.document.file_name
        request.urlretrieve(
            f'https://api.telegram.org/file/bot{config.API_TOKEN}/{journal}',
            f'./{file_name}')
        df = pd.read_excel(r"Журнал.xlsx")
        del df['Фамилия']
        del df['Имя']
        del df['Группа']
        del df['Номер зачётной книжки']
        for date in df.columns:
            grades = []
            for i in df[date]:
                grades.append(i)
            cid = db.get_cid_by_tid(message.from_user.id)
            list_of_students = db.get_list_of_students(cid)
            for i in range(0, len(list_of_students)):
                try:
                    if math.isnan(grades[i]):
                        db.assign_grades(list_of_students[i][0], cid, date, 0)
                    else:
                        db.assign_grades(list_of_students[i][0], cid, date,
                                         grades[i])
                except:
                    pass
        await message.answer('Оценки выставлены!')
    except:
        await message.answer('Не удалось найти файл с оценками')
        print(traceback.format_exc())
示例#2
0
async def fill_grades1(message: Message, state: FSMContext):
    from urllib import request
    import config
    try:
        file_info = await bot.get_file(message.document.file_id)
        journal = file_info.file_path
        file_name = message.document.file_name
        request.urlretrieve(f'https://api.telegram.org/file/bot{config.API_TOKEN}/{journal}',f'./{file_name}')
        df = pd.read_excel(r"Журнал.xlsx")
        del df['Фамилия']
        del df['Имя']
        del df['Группа']
        del df['Номер зачётной книжки']
        del df['Unnamed: 0']
        print(df.columns)
        for date in df.columns:
            grades = []
            for i in df[date]:
                grades.append(i)
            cid = db.get_cid_by_tid(message.from_user.id)
            cur_stud_id_in_journal = db.get_sid_from_journal(cid)
            sids = [el[0] for el in cur_stud_id_in_journal]
            list_of_students = db.get_list_of_students(cid)
            if date in db.get_dates(cid):
                for i in range(0, len(list_of_students)):
                    if list_of_students[i][0] in sids:
                        try:
                            if math.isnan(grades[i]):
                                db.assign_grades(list_of_students[i][0], cid, date, 0)
                            else:
                                db.assign_grades(list_of_students[i][0], cid, date, grades[i])
                        except:
                            pass
                    else:
                        try:
                            if math.isnan(grades[i]):
                                db.add_to_journal(list_of_students[i][0], cid, date, 0,' ')
                            else:
                                db.add_to_journal(list_of_students[i][0], cid, date, grades[i],' ')
                        except:
                            pass
            else:
                for i in range(0, len(list_of_students)):
                    try:
                        if math.isnan(grades[i]):
                            db.add_to_journal(list_of_students[i][0], cid, date, 0, ' ')
                        else:
                            db.add_to_journal(list_of_students[i][0], cid, date, grades[i], ' ')
                    except:
                        pass


        await message.answer('Оценки выставлены!',reply_markup=ReplyKeyboardRemove())
        await state.finish()
        return
    except:
        await message.answer('Не удалось найти файл с оценками')
        print(traceback.format_exc())
async def delete_grades1(message: Message, state: FSMContext):
    try:
        cid = db.get_cid_by_tid(message.from_user.id)
        answer = message.text
        db.delete_grades(cid, answer)
        await message.answer('Оценки удалены!')
    except:
        await message.answer('Не удалось удалить оценки')
    await state.finish()
示例#4
0
async def update_attendence1(message: Message, state: FSMContext):
    try:
        cid = db.get_cid_by_tid(message.from_user.id)
        list_of_students = db.get_list_of_students(cid)
        answer = message.text
        df = pd.read_excel(r"Посещаемость.xlsx")     
        attendence = []
        for i in df[answer]:
            if math.isnan(i):
                attendence.append(" ")
            else:
                attendence.append(i)
        for i in range(0, len(list_of_students)):
            try:
                db.assign_attendence1(list_of_students[i][0], cid, answer, attendence[i])
            except:
                pass
        await message.answer('Посещаемость выставлена!')
    except:
        await message.answer('Не удалось найти файл с посещаемостью')
    await state.finish() 
示例#5
0
async def change_grades1(message: Message, state: FSMContext):
    try:
        cid = db.get_cid_by_tid(message.from_user.id)
        list_of_students = db.get_list_of_students(cid)
        answer = message.text
        for student in list_of_students:
            db.add_couple(student[0],cid,answer)
        df = pd.read_excel(r"Оценки.xlsx")     
        grades = []
        for grade in df[answer]:
            if math.isnan(grade):
                grades.append(0)
            else:
                grades.append(int(grade))
        for i in range(0, len(list_of_students)):
            try:
                db.assign_grades(list_of_students[i][0], cid, answer, grades[i])
            except:
                pass
        await message.answer('Оценки выставлены!')
    except:
        await message.answer('Не удалось найти файл с оценками')
    await state.finish()  
async def get_attendence_journal(message: Message):
    try:
        tid = message.from_user.id
        cid = db.get_cid_by_tid(tid)
        students = db.get_list_of_students(cid)
        journal = db.get_from_journal(cid)
        dates = []
        names = []
        surnames = []
        groups = []
        zach_books = []
        attendence = []
        check = False
        for i in journal:
            dates.append(i[2])
        for student in students:
            attendence_stud = []
            names.append(student[1])
            surnames.append(student[2])
            groups.append(student[4])
            zach_books.append(student[3])
            for j in db.get_attendece(student[0], cid):
                attendence_stud.append(j)
            attendence.append(attendence_stud)
            if attendence_stud:
                check = True
        amounts_attendence = []
        for a in attendence:
            amounts_attendence.append(len(a))
        df = pd.DataFrame({
            'Фамилия': surnames,
            'Имя': names,
            'Группа': groups,
            'Номер зачётной книжки': zach_books
        })
        if check:
            max_amount_attendence = max(amounts_attendence)
            dates = list(set(dates))
            dates.sort()
            for a in attendence:
                if len(a) < max_amount_attendence:
                    while len(a) < max_amount_attendence:
                        a.insert(len(a), 0)
            df_attendence = pd.DataFrame(columns=dates)
            #print(len(grades),len(df_grades),len(df_grades.columns))
            j = 0
            #print(grades)
            for col in df_attendence.columns:
                at = []
                for i in range(len(students)):
                    at.append(attendence[i][j])
                df_attendence[col] = np.array(at)
                #print(col)
                j += 1
            answer = pd.merge(df,
                              df_attendence,
                              left_index=True,
                              right_index=True)
            answer.to_excel(r"Журнал_Посещаемости.xlsx")

        else:
            answer = df
            answer.to_excel(r"Журнал_Посещаемости.xlsx")
        await message.answer(
            f"Журнал посещаемости для курса {db.get_name_course_by_id(cid)}",
            reply_markup=ReplyKeyboardRemove())
        with open("Журнал_Посещаемости.xlsx", 'rb') as file:
            await dp.bot.send_document(message.from_user.id, file)
    except:
        await message.answer(
            'Вы не являетесь администратором ни одного из курсов',
            reply_markup=ReplyKeyboardRemove())
        print(traceback.format_exc())
        return