1
0
Fork 0
mirror of https://github.com/EDeev/tablo.git synced 2026-10-07 20:49:31 +03:00
Commit graph

14 commits

Author SHA1 Message Date
9effed12e3 README на русском и английском, документация, скриншоты
- README.md и README.en.md: что это, статус учебного проекта, скриншоты, быстрый старт в
  Docker, установка без Docker, переменные, схема, развёртывание, тесты; лишний Bootstrap
  из стека убран (стили свои);
- docs/architecture.md (структура, формат расписания, трекеры, права) и docs/deploy.md;
- пояснительная записка перенесена в docs/.
2026-10-02 13:37:11 +00:00
999ca04f6e CI: ruff и тесты на PostgreSQL на каждый push; Docker-образ по тегу в GHCR и dcr.deev.su 2026-10-02 13:31:03 +00:00
b7de6912db Docker: образ с Chromium для экспорта, compose вместе с PostgreSQL
- Dockerfile на python:3.12-slim с Playwright/Chromium, миграции при старте, gunicorn,
  непривилегированный пользователь;
- compose.yaml: приложение + PostgreSQL 16 с томом и проверкой готовности;
- .env.example переписан: SECRET_KEY, ИИ-провайдер, DATABASE_URL или DB_*;
- .gitignore.
2026-10-02 13:31:03 +00:00
ac8859d9d3 Тесты на PostgreSQL: права доступа, экспорт, ссылки, вход, разбор периодов и времени
24 теста pytest на настоящей базе (адрес — TEST_DATABASE_URL): владелец, посторонний,
редактор и ссылка на просмотр; экспорт по id только для владельца и редакторов;
регистрация и вход, защита next; периоды через Новый год, сортировка времени,
сборка дня и слияние расписаний. SQLAlchemy и alembic закреплены по продакшену:
SQLAlchemy 2.1 по умолчанию требует другой драйвер PostgreSQL (psycopg 3).
2026-10-02 13:24:18 +00:00
3a21ef916a Вход: переход по ?next= только на страницы этого сайта
После входа приложение перенаправляло на любой адрес из параметра next — ссылкой
вида /login?next=https://… можно было увести пользователя на чужой сайт.
2026-10-02 13:24:18 +00:00
164623417c Безопасность: права на экспорт, обязательный SECRET_KEY, ошибки ИИ не показываются пользователю
- экспорт в JSON/CSV/PDF/PNG пускал любого вошедшего к любому расписанию, у которого
  есть хоть одна ссылка-приглашение (достаточно перебрать id); теперь — только владелец
  и редакторы, как и просмотр по id;
- три копии проверки прав сведены в app/access.py;
- без SECRET_KEY приложение не запускается (кроме отладки и тестов): со значением по
  умолчанию cookie сессии можно было подделать и войти под любым пользователем;
- текст исключения от ИИ-провайдера больше не уходит в интерфейс, ошибка пишется в лог;
- DATABASE_URL как альтернатива DB_*; debug в run.py — из FLASK_DEBUG;
- неиспользуемые импорты и переменные удалены (ruff).
2026-10-02 13:10:20 +00:00
af060982cf Зависимости: playwright и gunicorn закреплены по продакшену, dev-зависимости и настройки ruff/pytest 2026-10-02 13:10:20 +00:00
1db34e9794 Исправления с продакшена: периоды через Новый год, сортировка по времени, debug выключен
- период расписания вида 01.09–03.01 больше не даёт конец раньше начала: конец
  относится к следующему году;
- занятия сортируются по времени начала как по числу, «9:00» больше не оказывается
  после «10:00»;
- run.py запускает сервер без режима отладки.
2026-10-02 13:07:38 +00:00
8558a71b4c Explanatory note 2026-05-25 13:14:36 +03:00
464db8a152 Merge branch 'main' of https://github.com/EDeev/tablo 2026-05-25 12:48:47 +03:00
d102136615 Upd Add export / Fix bugs 2026-05-25 12:48:41 +03:00
18bf6dfb93
Upd README 2026-05-19 13:52:13 +03:00
310ad41be1
Upd README 2026-05-19 13:51:51 +03:00
3946aeb81e Full Project 2026-05-19 13:49:09 +03:00