This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Как войти в ЭЛЕКТРОННЫЙ ДНЕВНИК через ГОСУСЛУГИ, #ГалкинTV
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Описание: Проект школьный дневник(журнал). Сделан на языке python фреймворк flask. Тажке использовал базу данных mysql, json, jquery, bootstrap. В папке templates находятся все html файлы. В папке static находятся css, images.
В проекте присутствует авторизация для учителей, учеников и калссного руководителя, логины и пароли находятся в базе данных. На сайте присутствует выставление оценок преподователями. Классный руководитель может просматривать оценки какого либо учащегося. Присутсвует возможность для классного руководителя иззменять рассадку учеников.
Также преподователи могут делать записи в виде темы урока, дз, и классная работа. Ученик может просматривать домашнее задание, свои оценки в виде таблицы и срений балл по урокам в виде графика. Учителям тоже выводится график средних оценок каждого ученика по предмету. Сайт не зависает и все работает четко)
План работы: flask — для связи html страниц и обработки форм отправки оценок и прочее. mysql — ххранение всех оценок и записей преподователей js, json — нужны для создания графика по средним баллам ученика(из базы данных выгружаю оценки и предаю в js через json)
About
Проект школьный дневник(журнал). Сделал на языке python фреймворк flask. Тажке использовал базу данных mysql еще: json jquery, bootstrap. Остались мелкие детали в проекте и все.
Источник: github.com
Как я написал удобную оболочку над электронным дневником
Простой способ планирования
Долгое время во всех школах моей области использовался устаревший АИАС АВЕРС. В 2022 году сообщили, что все школы переходят на новый электронный дневник. Я надеялся, что представят нечто вроде дневник.ру с приложением, уведомлениями, мобильной адаптацией и удобными фичами, а на деле мы получили устаревший сайт, в котором посмотреть расписание на телефоне — огромное испытание. Дневник был настолько сырой, что в начале учебного года для просмотра оценок было необходимо скачивать excel файл, благо это починили спустя половину учебного года.
Моей задачей стало разработать сайт, ускоряющей процесс обучения и помогающий в различных его сферах.
Обзор сайта
Я хотел сделать прежде всего удобную замену, из-за чего в приоритете стояли:
- Мобильная адаптация Большинство учащихся пользуются дневником на телефонах. В моем дневнике на мобильных устройствах элементы выстраиваются в 1 столбик, а оценки изменяют свой вид.
- Темная тема С появлением темной темы во всех мессенджерах и большинстве приложений, люди привыкли к ней. Я решил не обходить это стороной и добавил ее на сайт. Переключаются темы при помощи кнопки в левом нижнем углу. По умолчанию тема соответствует теме браузера.
- Дополнительные функции, ускоряющие работу с дневником.
Если о первых двух пунктах достаточно написать пару предложений, то на следующем стоит остановиться.
Домашняя страница
На главной странице расположено окно с текущим днем, последними оценками и ботом вк, отправляющим изменения в расписании, когда они приходят на сайт школы.
Модальное окно урока
Если нажать на оценку или что-либо, связанное с уроком, открывается модальное окно. В нем можно просмотреть тему, домашнее задание с прошлого и данного урока.
Рядом с домашним заданием есть две кнопки:
- AI — отправляет запрос с данным домашним заданием в perplexity.ai
- Перейти — отправляет пользователя в гугл с этим запросом
Live режим оценок
Представим ситуацию: в итоговых оценках появилась двойка, поставленная еще в начале четверти. Старый дневник пришлось бы долго листать и искать оценку, но я упростил это.
Теперь достаточно перейти к оценкам, в четвертях выбрать «Live» и дневник подгрузит все оценки вместе с датами. Если нажать на оценку, появится модальное окно с уроком, когда она была поставлена.
Фильтрация предметов
Рассмотрим еще одну ситуацию: ученик отсутствовал по болезни и в последний день болезни ему надо сделать все накопившиеся домашние задания. В старом дневнике пришлось бы листать и искать эти уроки, я предлагаю более простое решение.
При нажатии на урок, появляется модальное окно. В нем можно нажать кнопку «Показать уроки», что откроет следующую страницу:
На данной странице показаны последние уроки заданного типа.
Расчет оценок
Ну и куда без третьей ситуации? Допустим, началась последняя неделя четверти и нам срочно надо исправлять оценки. Но сколько оценок надо исправить, сколько получить пятерок? В этом поможет дневник.
Если нажать на предмет в итоговых оценках, откроется модальное окно расчета оценок. В нем написано сколько пятерок осталось до повышения балла и как изменится балл при получении/удалении оценки.
Сессия
Последним нововведением является продление сессии. В оригинальном дневнике необходимо авторизовываться по несколько раз за месяц, в моем же дневнике сессия продлена до года.
Немного технических деталей
Сайт был написан на фреймворке flask, так как он наиболее прост в освоении.
Api
Получение данных идет через RESTful оригинального дневника. Методы api я узнал из инструментом разработчика chrome.
Методы api, которые я использовал
https://one.43edu.ru/edv/index/diary/GUID?date=DATE — получение дневника. Возвращает дни с заданного до конца недели. Также в ответе есть периоды (четверти)
Оценки возможно получить только в виде excel файла, поэтому я их скачиваю, а позже читаю как csv. Получение оценок:
- https://one.43edu.ru/edv/index/report/period/GUID?format=xls — годовые оценки
- https://one.43edu.ru/edv/index/report/marks/GUID?format=xlsend=END_DATE — четвертные оценки
- POST https://passport.43edu.ru/auth/login — авторизация
При авторизации я сохраняю в базу данных данные о пользователе и session cookie с сайта. При повторном входе на сайт, я пытаюсь зайти с использованием этого куки и если не получается, авторизуюсь при помощи логина и пароля. Данный подход значительно ускоряет вход на сайт.
Сайт дневника стал блокировать запросы с заголовком python requests, поэтому для каждой сессии создаются случайные заголовки.
Frontend
Для верстки использовался Bootstrap 5, тема меняется при помощи его цветовых режимов.
Diary class
Так как запросы выполняются достаточно долго, я создал класс Diary, реализующий кэширование данных. В нем содержатся датаклассы Week (в Week — Day, а в Day — Subject), которые сохраняются при получении с сервера. Для работы с этим классом я реализовал декоратор login_required, который передает в маршрутизатор дневник первым аргументом.
Но если класс Diary будет храниться долгий срок, данные станут не актуальны. Поэтому нужно пересоздавать класс достаточно редко, чтобы не получать одни данные много раз и достаточно часто, чтобы данные были актуальны.
Я придумал следующее решение этой проблемы: при переходе в разные вкладки дневника, страница не обновляется и если пользователь обновит ее, дневник пересоздастся.
Javascript запросы
Переход между страницами реализован при помощи javascript. При нажатии на кнопку клиент отправляет запрос серверу и обновляет содержимое контейнера на сайте.
На следующих иллюстрациях показан процесс формирования домашней страницы.
- Красная стрелочка — запрос пользователя
- Синяя стрелочка запрос и ответы javascript
Возможно это решение не лучшее, но оно позволяет обновлять части сайта без обновления остальных.
Заключение
Это был один из первых моих flask проектов, благодаря ему я получил большой опыт. Надеюсь на предложения/критику/вопросы или просто оценку работы в комментариях.
Если кому-то интересно, с исходным кодом можно ознакомиться в GitHub проекте.
Это моя первая статья и оформление в некоторых моментах не совсем красивое, а текст не очень складный. Надеюсь, что мои навыки в данной сфере будут улучшаться с каждой статьей.
Источник: habr.com
Пишем приложение для заметок на Python. Часть №1
Всем привет! Сегодня я решил вас порадовать — мы сделаем своё приложение для заметок. В этом приложении вы сможете поставить время, дату и событие. Он вас будет уведомлять о событиях в то время, в которое вы поставили. Ну начнем!
Импортируем нужные нам библиотеки:
А теперь создадим наше окно. Для этого создаем функцию, а после функции мы пишем небольшой код, которые при запуске программы сразу открывает наше окно.
Если вы сейчас запустите этот код он вам выдаст ошибку, но не переживайте в дальнейшем все будет работать. Итак выше функции aplic создаем класс в котором пишем параметры нашему окну.
Строка self.setWindowTitle(«programs») отвечает за название нашего окна, а следующая строка отвечает за расположение и размер нашего окна. Первые два параметра отвечают за расположение от левого верхнего угла по осям x и y, а вторые два параметра за размер. Теперь при запуске у вас появится окно, в котором ничего не будет. Мы это исправим. Нам пригодятся виджеты.
Для начала сделаем текст.
Думаю здесь все понятно. Создаем виджет QLabel в которой будет храниться текст, а дальше устанавливаем расположение текста. Тоже самое делаем со вторым текстом.
Создадим виджеты в которых будет храниться дата и время которое мы укажем.
В переменной data содержится виджет QDateEdit в которой мы сможем выставить нужную нам дату, а в переменной time содержится виджет QTimeEdit в котором соответственно мы можем выставить время.
Нам нужно поле в котором мы будем вводить наши заметки. Создадим его.
Переменная sobati содержит виджет QLineEdit , с помощью его у нас появится поле в котором мы будем вводить наши заметки.
Тепер нам нужна кнопка что бы сохранять все данные которые мы ввели.
Переменная knopka содержит виджет QPushButton , он создаст кнопку с названием — «Готово».
Теперь при запуске у вас появиться такое окно:
В следующей части мы сделаем все функции нашему приложению. Ну а я вам желаю хорошего кода.
До новых встреч!
Источник: dzen.ru