Skip to content

NikitaGolovaniuk/film_library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REST-API сервис для управления фильмотекой

Предисловие

Перечисленные ниже требования рекомендуется выполнять параллельно с изучением основного материала по Flask и NGINX. Например, вы изучили, как создавать модели - примените эти знания к проекту, создав необходимые модели, после чего создайте миграции к моделям и примените их. По ходу изучения вы будете сталкиваться с тем, что полученных знаний недостаточно, чтобы применить их к проекту, но не волнуйтесь, очень скоро (по ходу изучения следующих пунктов) это изменится.

Функциональные требования

  1. Поиск фильмов должен давать результаты по частичному совпадению.
  2. Для вывода результатов поиска необходимо использовать пагинацию (по-умолчанию - 10 результатов на одну страницу).
  3. Операции с фильмами:
  • добавлять может только авторизованный пользователь
  • удалять может только авторизованный пользователь, который его добавил или администратор
  • редактировать может только авторизованный пользователь, который его добавил или администратор
  • запрашивать может кто угодно
  1. Фильмы можно фильтровать по:
  • жанрам
  • диапазону годов выхода
  • режиссёру
  1. Фильмы можно сортировать по:
  • рейтингу
  • дате выхода
  1. Атрибуты фильма:
  • название
  • жанры
  • дата выхода
  • режиссёр
  • описание (необязательное для заполнения поле)
  • рейтинг (0-10)
  • постер
  • пользователь, добавивший фильм
  1. При удалении режиссёра фильм НЕ должен быть удален, вместо этого нужно установить director = ‘unknown’.
  2. Загрузка данных в БД должна сопровождаться валидациями по здравому смыслу (например, год выхода - должен быть числом, а не строкой).
  3. При ошибках нужно выдавать адекватные сообщения и коды ошибок, чтобы пользователь API мог понять, что является причиной ошибки.
  4. Должна присутствовать авторизация (рекомендуется использовать Flask-Login).

Требования к проекту

  1. Основа приложения - Flask Framework.
  2. Основной функционал должен быть покрыт тестами.
  3. Обязательным пунктом является применение Docker Compose.
  4. В качестве базы данных должен быть использован PostgreSQL.
  5. База данных должна быть нормализована и находиться минимум в 3-й нормальной форме.
  6. При написании кода должен соблюдаться code-style.
  7. Использование type hint активно приветствуется.
  8. В качестве виртуального окружения предпочтительней использовать один из этих инструментов: pipenv / poetry / pyenv.
  9. Запросы на ваш backend должны проксироваться через Nginx.
  10. При разработке использовать любой статический анализатор кода на выбор: pylint / prospector / black и т.д.
  11. В ходе разработки обязательно используется Git Flow, проект делится на Pull Request-ы, заранее прикидывается план задач, которые будете делать и оформлять в виде PR.
  12. Проект должен сопровождаться логгированием.
  13. Проект должен быть документирован при помощи swagger.

About

final flask education project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published