Проект Yamdb_infra собирает отзывы пользователей на произведения. Произведения делятся на категории: "Книги", "Фильмы", "Музыка". Список категорий может быть расширен. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории "Книги" могут быть произведения "Винни Пух и все-все-все" и " Марсианские хроники", а в категории "Музыка" — песня "Давеча" группы " Насекомые" и вторая сюита Баха. Произведению может быть присвоен жанр из списка предустановленных (например, "Сказка", "Рок" или "Артхаус"). Новые жанры может создавать только администратор. Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.
- Пользователь отправляет POST-запрос с параметром email
на
/api/v1/auth/email/
. - YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
- Пользователь отправляет POST-запрос с параметрами email и confirmation_code
на
/api/v1/auth/token/
, в ответе на запрос ему приходит token (JWT-токен). - Если письмо не дошло по какой то причине или был утерян token пользователь может выполнить вышеуказанные действия повторно.
-
Аноним — может просматривать описания произведений, читать отзывы и комментарии.
-
Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям ( фильмам/книгам/песенкам), может комментировать чужие отзывы; может редактировать и удалять свои отзывы и комментарии. Эта роль присваивается по умолчанию каждому новому пользователю.
-
Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять любые отзывы и комментарии.
-
Администратор (admin) — полные права на управление проектом и всем его содержимым. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
-
Администратор Django — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры, имеет доступ к административному интерфейсу Django, может назначать роли пользователям, устанавливать их права.
-
Суперюзер Django — те же права, что и у администратора Django, не зависимо от установленной роли.
# - Скачиваем проект.
git clone 'git@github.com:cookievii/Yamdb_infra.git'
# - Переходим в папку "infra".
cd infra/
# - Создаем файл с секретами(Шаблон наполнения показан ниже).
touch .env
# - Запускаем docker-compose.
docker-compose up -d --build
# - Выполняем миграции БД.
docker-compose exec web python manage.py makemigrations
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
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql ```
DB_NAME=postgres # имя базы данных ```
POSTGRES_USER=postgres # логин для подключения к базе данных ```
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой) ```
DB_HOST=db # название сервиса (контейнера) ```
DB_PORT=5432 # порт для подключения к БД ```
Документация для API: доступна по ссылке
- Валитов Ильмир Илсурович GitHub - cookievii