Проект yamdb_final
Описание
Проект YaMDb
собирает отзывы (Review) пользователей на произведения (Titles).
Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий
(Category) может быть расширен администратором. Сами произведения в YaMDb не хранятся,
здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения:
книги, фильмы или музыка. Произведению может быть присвоен жанр (Genre) из списка
предустановленных. Новые жанры может создавать только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы
(Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число);
из пользовательских оценок формируется усреднённая оценка произведения — рейтинг
(целое число). На одно произведение пользователь может оставить только один отзыв.
Пользовательские роли
Аноним
— может просматривать описания произведений, читать отзывы и комментарии.Аутентифицированный пользователь (user)
— может читать всё, как и Аноним, может публиковать отзывы и ставить оценки произведениям (фильмам/книгам/песенкам), может комментировать отзывы; может редактировать и удалять свои отзывы и комментарии, редактировать свои оценки произведений. Эта роль присваивается по умолчанию каждому новому пользователю.Модератор (moderator)
— те же права, что и у Аутентифицированного пользователя, плюс право удалять и редактировать любые отзывы и комментарии.Администратор (admin)
— полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.Суперюзер
Django должен всегда обладать правами администратора, пользователя с правами admin. Даже если изменить пользовательскую роль суперюзера — это не лишит его прав администратора. Суперюзер — всегда администратор, но администратор — не обязательно суперюзер.
Ресурсы
- Ресурс auth: аутентификация.
- Ресурс users: пользователи.
- Ресурс titles: произведения, к которым пишут отзывы (определённый фильм, книга или песенка).
- Ресурс categories: категории (типы) произведений («Фильмы», «Книги», «Музыка»).
- Ресурс genres: жанры произведений. Одно произведение может быть привязано к нескольким жанрам.
- Ресурс reviews: отзывы на произведения. Отзыв привязан к определённому произведению.
- Ресурс comments: комментарии к отзывам. Комментарий привязан к определённому отзыву.
Инструкция к установке (Запуск проекта с помощью Docker)
- Склонируйте репозиторий
git clone git@github.com:chumanastasia/infra_sp2.git
- Перейдите в директорию
infra
и из нее выполните команду:
docker compose up -d --build
- В контейнере
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