Skip to content

pro100cemuk/infra_sp2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Семенов Евгений ИгоревичСеменов Евгений Игоревич
Семенов Евгений Игоревич
and
Семенов Евгений Игоревич
Apr 6, 2022
5fb5d5c · Apr 6, 2022

History

7 Commits
Apr 6, 2022
Apr 5, 2022
Mar 30, 2022
Mar 30, 2022
Apr 6, 2022
Apr 6, 2022
Mar 30, 2022
Mar 30, 2022

Repository files navigation

YaMDB API

Учебный групповой проект "API сервиса YaMDB".

Описание проекта YaMDB

Проект YaMDB собирает отзывы пользователей на произведения. Произведения делятся на категории: "Книги", "Фильмы", "Музыка". Список категорий может быть дополнен администратором. Сами произведения в YaMDB не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории "Книги" могут быть произведения "Винни-Пух и все-все-все", а в категории "Музыка" - песня "Давеча" группы "Насекомые" и вторая сюита Баха. Произведению может быть присвоен жанр из списка предустановленных (например, "Сказка", "Рок" или "Артхаус"). Новые жанры может создавать только администратор. Благодарные или возмущенные пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усредненная оценка произведения - рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.

Алгоритм регистрации пользователей

  1. Пользователь отправляет POST-запрос с параметрами email и username на эндпоинт /api/v1/auth/signup/.
  2. Сервис YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на указанный адрес email.
  3. Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен). В результате пользователь получает токен и может работать с API проекта, отправляя этот токен с каждым запросом.
  4. После регистрации и получения токена пользователь может отправить PATCH-запрос на эндпоинт /api/v1/users/me/ и заполнить поля в своём профайле (описание полей — в документации).
  5. Пользователя может создать администратор — через админ-зону сайта или через POST-запрос на специальный эндпоинт api/v1/users/ (описание полей запроса для этого случая — в документации).
  6. После этого пользователь должен самостоятельно отправить свой email и username на эндпоинт /api/v1/auth/signup/ , в ответ ему должно прийти письмо с кодом подтверждения.
  7. Далее пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен), как и при самостоятельной регистрации.

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

В командной строке клонируйте проект в нужную папку и перейдите в него:

git clone https://github.com/pro100cemuk/infra_sp2
cd api_yamdb

Создайте и активируйте виртуальное окружение:

python -m venv venv
source venv/Scripts/activate

Установите зависимости:

pip install -r requirements.txt

Перейдите в папку с файлом docker-compose.yaml:

cd infra

Разверните контейнеры:

docker-compose up -d --build

Создайте и выполните миграции:

docker-compose exec web python manage.py migrate auth
docker-compose exec web python manage.py migrate --fake-initial --run-syncdb

Создайте суперпользователя:

docker-compose exec web python manage.py createsuperuser

Соберите статику:

docker-compose exec web python manage.py collectstatic --no-input

Создайте дамп базы данных:

docker-compose exec web python manage.py dumpdata > fixtures.json

Остановите приложение в контейнерах:

docker-compose down -v

Шаблон заполнения .env

# указываем, с какой БД работаем
DB_ENGINE=django.db.backends.postgresql
# имя базы данных
DB_NAME=
# логин для подключения к базе данных
POSTGRES_USER=
# пароль для подключения к БД (установите свой)
POSTGRES_PASSWORD=
# название сервиса (контейнера)
DB_HOST=
# порт для подключения к БД
DB_PORT=

Open Source License

GPL v3 (can check in gpl-3.0.md file)

Автор проекта

pro100cemuk aka Евгений Семенов студент 6 кагорты ЯндексПрактикум