Skip to content

Margarita-pyth/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис YaMDb

Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий может быть расширен администратором.

  • ✨Magic ✨Python

Технологии

  • Django rest_framework
  • Django rest_framework_simplejwt
  • Django django_filters
  • Git

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

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

git clone https://github.com/Margarita-pyth/api_yamdb.git
cd api_yamdb

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

python3 -m venv env
source env/Scripts/activate

Установить зависимости из файла requirements.txt:

python3 -m pip install --upgrade pip
pip install -r requirements.txt

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

python3 manage.py migrate

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

python3 manage.py runserver

После запуска сервера можно ознакомится с документацией по проекту, в которой описана основная логика приложения, документация доступна по ссылке: http://127.0.0.1:8000/redoc/

Как загрузить данные в проект:

Запустить файл csv2json.py в консоли, находясь в директории /c/Dev/api_yamdb/api_yamdb:

python csv2json.py

Выполнить команду в консоли:

python manage.py loaddata reviews/fixtures/*.json

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

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

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

  • Пользователь отправляет POST-запрос с параметрами email и username на эндпоинт /api/v1/auth/signup/.
  • Сервис YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на указанный адрес email.
  • Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен).
  • В результате пользователь получает токен и может работать с API проекта, отправляя этот токен с каждым запросом.
  • После регистрации и получения токена пользователь может отправить PATCH-запрос на эндпоинт /api/v1/users/me/ и заполнить поля в своём профайле (описание полей — в документации по ссылке: http://127.0.0.1:8000/redoc/).

Создание пользователя администратором

  • Пользователя может создать администратор — через админ-зону сайта или через POST-запрос на специальный эндпоинт api/v1/users/ (описание полей запроса для этого случая — в документации).
    • В этот момент письмо с кодом подтверждения пользователю отправлять не нужно. После этого пользователь должен самостоятельно отправить свой email и username на эндпоинт /api/v1/auth/signup/ , в ответ ему должно прийти письмо с кодом подтверждения.
  • Далее пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен), как и при самостоятельной регистрации.

Ресурсы сервиса API YaMDb

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

License

**Подготовлено командой разработчиков:

evgenlit, Aleksandr-Fedotov, Margarita-pyth **


YamDB Service

The YaMDb project collects user reviews of works. The works are divided into categories: "Books", "Films", "Music". The list of categories can be expanded by the administrator.

  • ✨Magic ✨Python

Technologies

  • Django rest_framework
  • Django rest_framework_simplejwt
  • Django django_filters
  • Git

How to launch a project:

Clone the repository and go to it on the command line:

git clone https://github.com/Margarita-pyth/api_yamdb.git
cd api_yamdb

Create and activate a virtual environment:

python3 -m venv env
source env/Scripts/activate

Install dependencies from a file requirements.txt:

python3 -m pip install --upgrade pip
pip install -r requirements.txt

Perform migrations:

python3 manage.py migrate

Launch a project:

python3 manage.py runserver

After starting the server, you can get acquainted with the project documentation, which describes the main logic of the application, the documentation is available at the link: http://127.0.0.1:8000/redoc/

How to upload data to a project

Run the file csv2json.py in the console, located in the directory /c/Dev/api_yamdb/api_yamdb:

python csv2json.py

Run the command in the console:

python manage.py loaddata reviews/fixtures/*.json

User roles

  • Anonymous — can view descriptions of works, read reviews and comments.
  • Authenticated user (user) — can read everything, as well as Anonymous, can publish reviews and rate works (films / books / songs), can comment on reviews; can edit and delete their reviews and comments, edit their ratings of works. This role is assigned by default to each new user.
  • Moderator — the same rights as an Authenticated User, plus the right to delete and edit any reviews and comments.
  • Admin — full rights to manage all the content of the project. Can create and delete works, categories and genres. Can assign roles to users.
  • The Django superuser must always have administrator rights, a user with admin rights. Even if you change the user role of the superuser, it will not deprive him of administrator rights. A superuser is always an administrator, but an administrator is not necessarily a superuser.

User registration algorithm

  • The user sends a POST request with the email and username parameters to the endpoint /api/v1/auth/signup/. -The YaMDB service sends an email with a confirmation code (confirmation_code) to the specified email address.
  • The user sends a POST request with the username and confirmation_code parameters to the endpoint /api/v1/auth/token/, in response to the request he receives a token (JWT token).
  • As a result, the user receives a token and can work with the project API by sending this token with each request.
  • After registering and receiving the token, the user can send a PATCH request to the endpoint /api/v1/users/me/ and fill in the fields in his profile (the description of the fields is in the documentation at the link: http://127.0.0.1:8000/redoc /).

Creating a user by an administrator

  • The user can be created by an administrator — through the site's admin zone or through a POST request to a special api endpoint/v1/users/ (the description of the request fields for this case is in the documentation).
    • At this point, the user does not need to send an email with a confirmation code. After that, the user must independently send his email and username to the endpoint /api/v1/auth/signup/, in response he should receive an email with a confirmation code.
  • Next, the user sends a POST request with the username and confirmation_code parameters to the endpoint /api/v1/auth/token/, in response to the request, he receives a token (JWT token), as with self-registration.

Resources of the YaMDb API service

  • auth: authentication.
  • users: users.
  • titles: works that are reviewed (a certain movie, book or song).
  • categories: categories (types) of works ("Movies", "Books", "Music").
  • genres: genres of works. One work can be linked to several genres.
  • reviews: reviews of works. The review is tied to a specific work.
  • comments: comments on reviews. The comment is linked to a specific review.

License

**Prepared by the development team:

evgenlit, Aleksandr-Fedotov, Margarita-pyth **