Skip to content

SVerstov/sw-group-tt

Repository files navigation

Что интересного в этой реализации?

Так как пациент, доктор и администратор - хоть и имеют разные роли, но суть одно и то же, так что основные данные собраны в модели Users, c возможностью расширения дополнительных параметров в Patients, Doctors. К тому, же сам доктор в какой-то момент может стать пациентом. (при этом рабочий личный телефон разные) Из-за этого пришлось повозиться с DRF, попереопределять методы. Но зато у нас нет дубдлирования данных.

Доп. сущность для администратора пока не создавалась - ограничился ролью в модели Users.

flake8 и pytest встроены через pre-commit,

Что ещё можно было бы доделать

  • тесты пока поверхностные, особенно что касается отрицательных сценариев. Чисто механическая работа - в реальном проекте кончено надо покрыть нормально.
  • можно добавить nginx в докере, чтобы статические файлы отдавалось через него, но как-то я приывык с nginx рабоать на сервере, а не в докере. Так что докер пока без статики
  • нет проверки на занятость времени при записи к врачу. Тут можно было бы использовать ограничение Exclude postgres или сделать проверку в сериализаторе, но я не стал усложнять - тестовое как никак
  • рефакторинг тестов. Как минимум вынести фикстуры

Как запустить

.env

чтобы сильно не заморачиваться я .env.prod положил в репозиторий. С этими настройками стартует докер Для локального запуска, запуска тестов стоит создать аналогичный .env

ps потное дело, что SECRET_KEY в репозитории это только для тестов и удобства проверяющего

Запуск

Либо через uv в dev режиме: uv run manage.py migrate && uv run manage.py runserver

Либо через docker-compose: docker-compose up --build

После этого стоит создать суперпользователя. Либо через manage.py напрямяю либо через docker-compose: docker-compose run uv run manage.py createsuperuser

Без докера запуститься на 8000 порту, через докер - на 8080 порту.

Использование

Сходить на /api/token/ и залогиниться. Отлично! Теперь можно пойти на /api/, а оттуда по другим эндпоинтам и создавать, редактировать, удалять и получать данные.

Примеры использования фильтров, поиска, сортировки

Поиск консультации по статусу /api/consultations/?status=finished Поиск с сортировкой /api/consultations/?ordering=start_time&status=confirmed Поиск по врачу /api/consultations/?search=Петров&search_type=doctor

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published