Skip to content

Instantly share code, notes, and snippets.

@madiyar2403
Created June 5, 2021 08:32
Show Gist options
  • Save madiyar2403/10f3eebed0cd1eda6b17258e9b0c06be to your computer and use it in GitHub Desktop.
Save madiyar2403/10f3eebed0cd1eda6b17258e9b0c06be to your computer and use it in GitHub Desktop.
def get_exams_by_date(date: datetime):
exams = Exam.objects.filter(time=date)
if not exams:
return
Path("logs_ustudy").mkdir(parents=True, exist_ok=True)
to_zone = tz.tzlocal()
date = date.astimezone(to_zone)
file_path = f'logs_ustudy/{date}.xlsx'
workbook = xlsxwriter.Workbook(file_path)
for exam in exams:
ppent_code = exam.place.ppent_code
persons = Person.objects.filter(exam_seats__exam=exam)
worksheet = workbook.add_worksheet(ppent_code)
worksheet.write('A1', 'Посадочный лист')
worksheet.write('A2', 'Код и наименование РЦТ')
worksheet.write('B2', ppent_code)
worksheet.write('A3', 'Дата:')
worksheet.write('B3', f'{date.date()}')
worksheet.write('D3', 'Поток:')
if date.hour == 9:
worksheet.write('E3', '1')
else:
worksheet.write('E3', '2')
worksheet.write('A5', 'Р/с')
worksheet.write('B5', 'ИИН тестируемого')
worksheet.write('C5', 'ФИО тестируемого')
worksheet.write('D5', '№ аудитории')
worksheet.write('E5', '№ места')
for i, person in enumerate(persons):
iin = person.iin
fio = f'{person.first_name} {person.last_name} {person.patronymic_name}'
try:
seat_number = person.exam_seats.get(exam__time=date).seat.number
auditorium_number = person.exam_seats.get(exam__time=date).seat.auditorium.number
except AttributeError:
seat_number = '---'
auditorium_number = '---'
except Exception as e:
print(person.__dict__)
worksheet.write(f'A{i+6}', i+1)
worksheet.write(f'B{i+6}', iin)
worksheet.write(f'C{i+6}', fio)
worksheet.write(f'D{i+6}', auditorium_number)
worksheet.write(f'E{i+6}', seat_number)
workbook.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment