/yamdb_final-1

yamdb_final

Primary LanguagePython

Проект yamdb_final

example event parameter

Описание

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Произведению может быть присвоен жанр (Genre) из списка предустановленных. Новые жанры может создавать только администратор. Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.

Пользовательские роли

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

Ресурсы

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

Инструкция к установке (Запуск проекта с помощью Docker)

  1. Склонируйте репозиторий
git clone git@github.com:chumanastasia/infra_sp2.git
  1. Перейдите в директорию infra и из нее выполните команду:
docker compose up -d --build
  1. В контейнере web нужно выполнить миграции, создать суперпользователя и собрать статику
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input

Все готово! Проверить работоспособность сайта можно в браузере http://51.250.16.11/admin/ (сейчас сервер выключен) Авторизуйтесь под аккаунтом суперпользователя и убедитесь, что миграции прошли успешно!

Заполнение БД

Чтобы заполнить БД данными из json файла, нужно в терминале выполнить:

docker-compose exec web python manage.py loaddata fixtures.json

Пример запроса

POST запрос:

http://127.0.0.1/api/v1/auth/signup/

Тело запроса:

{ 
  "email": "sky@gmail.com",
  "username": "bluesky" }

Ответ: Статус 200. Тело ответа:

{ 
"username": "bluesky",
"email": "sky@gmail.com"
}

В папке sent_emails проекта придет confirmation code