Skip to content

Latest commit

 

History

History
85 lines (80 loc) · 6.65 KB

README.md

File metadata and controls

85 lines (80 loc) · 6.65 KB

Проект: создание DevOps для YaMDb

yamdb_final

Описание:

Проект YaMDb собирает отзывы пользователей на произведения. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. Произведения делятся на категории, такие как «Книги», «Фильмы», «Музыка».

Технологии :

Python Django DjangoREST JWT Docker GitHub

Функционал:

  • Реализован REST API.
  • Используется аутентификация с помощью JWT-token.
  • Поддерживает методы GET, POST, PUT, PATCH, DELETE.

Ресурсы

  • Ресурс auth: аутентификация.
  • Ресурс users: пользователи.
  • Ресурс titles: произведения, к которым пишут отзывы (определённый фильм, книга или песенка).
  • Ресурс categories: категории (типы) произведений («Фильмы», «Книги», «Музыка»). Одно произведение может быть привязано только к одной категории.
  • Ресурс genres: жанры произведений. Одно произведение может быть привязано к нескольким жанрам.
  • Ресурс reviews: отзывы на произведения. Отзыв привязан к определённому произведению.
  • Ресурс comments: комментарии к отзывам. Комментарий привязан к определённому отзыву.

Пользовательские роли и права доступа:

  • Аноним — может просматривать описания произведений, читать отзывы и комментарии.
  • Аутентифицированный пользователь (user) — может читать всё, как и Аноним, может публиковать отзывы и ставить оценки произведениям (фильмам/книгам/песенкам), может комментировать отзывы; может редактировать и удалять свои отзывы и комментарии, редактировать свои оценки произведений. Эта роль присваивается по умолчанию каждому новому пользователю.
  • Модератор (moderator) — те же права, что и у Аутентифицированного пользователя, плюс право удалять и редактировать любые отзывы и комментарии.
  • Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
  • Суперюзер Django обладает правами администратора, пользователя с правами admin.

Как запустить проект:

  1. Склонировать репозиторий в командной строке:
git clone https://github.com/IvanFilippov74/yamdb_final.git

Затем перейдите в корневую директорию проекта:

cd yamdb_final/
  1. В корневой директории создайте файл .env, и заполните его:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<ваш_пароль>
DB_HOST=db
DB_PORT=5432
SECRET_KEY=<секретный_ключ_проекта>
  1. Если Docker не установлен, установите его используя официальную инструкцию:
https://docs.docker.com/engine/install/
  1. Перейдите в директорию infra:
cd infra/

Затем запустите docker-compose, используя команду*:

docker-compose up -d
  1. Создайте миграции командой:
docker-compose exec web python manage.py migrate
  1. Подгрузите статику:
docker-compose exec web python manage.py collectstatic --no-input
  1. Заполните базу данных фикстурами:
docker-compose exec web python manage.py loaddata fixtures.json
  1. Создайте супер пользователя (кроме пользователя admin):
docker-compose exec web python manage.py createsuperuser
  1. Проект доступен по адресу http://localhost/, для админ-панели используйте http://localhost/admin/, документацию по api можно посмотреть здесь > http://localhost/redoc/.
  2. Остановить запущенные контейнеры можно командой docker-compose stop, вновь запустить docker-compose start, для остановки и удаления контейнеров используйте команду docker-compose down -v.

*Важное примечание для ОС Linux используйте команду sudo. ** Работа контейнеров продемонстрирована здесь:

Авторы:

Филиппов Иван