Skip to content

Esedess/yamdb_final

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

api_yamdb

Привет!

Студент факультета Бэкенд. Когорта №9+ Яндекс.Практикум

Над проектом Review and API for YaMDb работают:

В настоящее время изучаем Django, в проекте использеуем следующие фреймфорки:

  • 🔭 django
  • 🔭 djangorestframework
  • 🔭 python-dotenv
  • 🔭 djangorestframework-simplejwt
  • 🔭 docker
  • 🔭 docker-compose
  • 🔭 GitHub Actions

Проект YaMDb. Описание:

Проект YaMDb собирает отзывы пользователей на различные произведения.

Проект доступен анонимным и аутентифицированным пользователям. В данном проекте используется аутентификация по JWT-токену.

Функционал API:

1. Работа с отзывами: - Получение списка всех отзывов. Позволяет получить список всех отзывов. Права доступа: Доступно без токена; - Добавление нового отзыва. Позволяет добавить новый отзыв. Пользователь может оставить только один отзыв на произведение. Права доступа: Аутентифицированные пользователи; - Получение отзыва по id. Позволяет получить отзыв по id для указанного произведения. Права доступа: Доступно без токена; - Частичное обновление отзыва по id. Позволяет частичное обновить отзыв по id. Права доступа: Автор отзыва, модератор или администратор.; - Удаление отзыва по id. Позволяет удалить отзыв по id. Права доступа: Автор отзыва, модератор или администратор.
2. Работа с комментариями: - Получение списка всех комментариев к отзыву. Позволяет получить список всех комментариев к отзыву. Права доступа: Доступно без токена; - Добавление комментария. Позволяет добавить новый комментарий для отзыва. Права доступа: Аутентифицированные пользователи; - Получение комментария к отзыву. Позволяет получить комментарий для отзыва по id. Права доступа: Доступно без токена; - Частичное обновление комментария к отзыву. Позволяет частично обновить комментарий к отзыву по id. Права доступа: Автор комментария, модератор или администратор; - Удаление комментария к отзыву. Позволяет удалить комментарий к отзыву по id. Права доступа: Автор комментария, модератор или администратор.
3. Работа с категориями: - Получение списка всех категорий. Позволяет получить список всех категорий. Права доступа: Доступно без токена; - Добавление новой категории. Позволяет создать категорию. Права доступа: Администратор; - Удаление категории. Позволяет удалить категорию. Права доступа: Администратор.
4. Работа с категориями жанров: - Получение списка всех жанров. Позволяет получить список всех жанров. Права доступа: Доступно без токена; - Добавление жанра. Позволяет добавить жанр. Права доступа: Администратор; - Удаление жанра. Позволяет удалить жанр. Права доступа: Администратор.
5. Работа с произведениями, к которым пишут отзывы (определённый фильм, книга или песенка) - Получение списка всех произведений. Позволяет получить список всех объектов. Права доступа: Доступно без токена; - Добавление произведения. Позволяет добавить новое произведение. Права доступа: Администратор. Нельзя добавлять произведения, которые еще не вышли (год выпуска не может быть больше текущего). При добавлении нового произведения требуется указать уже существующие категорию и жанр; - Получение информации о произведении. Позволяет получит информацию о произведении. Права доступа: Доступно без токена; - Частичное обновление информации о произведении. Позволяет обновить информацию о произведении. Права доступа: Администрато; - Удаление произведения. Позволяет удалить произведение. Права доступа: Администратор.
6. Работа с пользователями: - Получение списка всех пользователей. Позволяет получить список всех пользователей. Права доступа: Администратор; - Добавление пользователя. Позволяет добавить нового пользователя. Права доступа: Администратор. Поля email и username должны быть уникальными; - Получение пользователя по username. Позволяет получить пользователя по username. Права доступа: Администратор; - изменение данных пользователя по username. Позволяет изменить данные пользователя по username. Права доступа: Администратор. Поля email и username должны быть уникальными.

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

Установить Докер:

sudo apt update

sudo apt upgrade

sudo apt install docker

Клонировать репозиторий и перейти в него в командной строке:

git clone https://github.com/Esedess/infra_sp2.git

cd infra_sp2

Запустить создание и запуск контейнеров:

sudo docker compose -f infra/docker-compose.yaml up

# или воспользоваться Make
make build

Выполнить миграции:

sudo docker compose -f infra/docker-compose.yaml exec web python3 manage.py makemigrations reviews
sudo docker compose -f infra/docker-compose.yaml exec web python3 manage.py migrate

# или воспользоваться Make
make migrate

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

sudo docker compose -f infra/docker-compose.yaml exec web python3 manage.py createsuperuser

# или воспользоваться Make
make createsuperuser

Создать статику:

sudo docker compose -f infra/docker-compose.yaml exec web python3 manage.py collectstatic --no-input

# или воспользоваться Make
make collectstatic

Выключить и удалить контейнеры:

sudo docker compose -f infra/docker-compose.yaml  down -v

# или воспользоваться Make
make down

--------------------------------------------------------------

Если вы внесли изменения в код контейнеры нужно перезапустить:

sudo docker compose -f infra/docker-compose.yaml up -d --build

# или воспользоваться Make
make rebuild

Загрузка данных из csv:

sudo docker compose -f infra/docker-compose.yaml exec web python3 manage.py import_csv

# или воспользоваться Make
make import_csv

Дамп базы данных:

sudo docker compose -f infra/docker-compose.yaml exec web python manage.py dumpdata > fixtures.json

# или воспользоваться Make
make dumpdb

--------------------------------------------------------------

В проекте используется технология dotenv:

Создать файл .env в директории infra/ Так же в директории infra есть .env.example с описанием возможных полей.

Примеры запросов и ответов можно найти в документации API

About

yamdb_final

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published