Skip to content

Latest commit

 

History

History
200 lines (141 loc) · 8.84 KB

README.md

File metadata and controls

200 lines (141 loc) · 8.84 KB

ArtReview Hub

Содержание


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

Проект собирает отзывы пользователей о различных произведениях искусства. Он классифицирует эти произведения по различным типам, таким как "Книги", "Фильмы" и "Музыка". Платформа не хранит сами произведения, она предназначена исключительно для сбора отзывов. Пользователи могут оставлять текстовые отзывы и оценивать произведения по шкале от одного до десяти. Каждый пользователь может оставить только один отзыв на каждое произведение. Только авторизованные пользователи могут оставлять отзывы, комментарии и оценки. Произведения могут быть связаны с жанрами, и администраторы имеют исключительные права на добавление произведений, категорий и жанров.

Роли пользователей и права доступа

  • Аноним: может просматривать описания работ, читать отзывы и комментарии.
  • Аутентифицированный пользователь (user): наследует все права Anonymous, может размещать обзоры, оценивать работы и комментировать обзоры. Он также может редактировать или удалять свои отзывы, комментарии и оценки.
  • Модератор (moderator): наследует все права Пользователя плюс возможность редактировать или удалять любые отзывы и комментарии.
  • Администратор (admin): полные права на управление содержимым проекта, включая создание и удаление произведений, категорий и жанров. Он также может назначать роли пользователям.
  • Суперюзер Django (Django Superuser): всегда имеет права администратора, независимо от установленной роли пользователя.

Регистрация пользователей

Пользователи могут самостоятельно зарегистрироваться, отправив POST-запрос с указанием электронной почты и имени пользователя. На электронную почту высылается код подтверждения, который, будучи подтвержденным, предоставляет пользователю JWT-токен. После регистрации пользователь может заполнить данные своего профиля.

Управление данными

При удалении пользователя удаляются также все его отзывы и комментарии. При удалении произведения удаляются все связанные с ним отзывы и комментарии, но удаление категории или жанра не приводит к удалению связанных с ними произведений. База данных может быть заполнена данными из предоставленных csv-файлов, которые можно импортировать с помощью собственной команды управления на Django.


Технологический стек:


Как развернуть проект:

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

cd
git clone [email protected]:aleksandr-miheichev/review_ratings_platform.git

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

python -m venv venv
source venv/Scripts/activate

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

pip install -r requirements.txt

Шаблон наполнения файла .env:

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=xxyyzz
DB_HOST=db
DB_PORT=5432

Запуск приложения:

Чтобы запустить модуль, необходимо в терминале перейти в папку api_yamdb:

cd .\api_yamdb\

Далее необходимо применить миграции:

python manage.py migrate

После этого осуществить запуск приложения:

python manage.py runserver

Далее отрыть сайт с проектом перейдя по ссылке:

http://127.0.0.1:8000/


Примеры работы с проектом:

Удобную веб-страницу со справочным меню, документацией для эндпоинтов и разрешённых методов, с примерами запросов, ответов и кода Вы сможете посмотреть по адресу:

http://127.0.0.1:8000/redoc/


Инструкции для накачки базы из CSV-файлов:

Для загрузки данных, получаемых вместе с проектом, из файлов csv в базу данных через Django ORM была написана собственная management-команда.

Увидеть её описание Вы сможете, открыв папку:

api_yamdb/api_yamdb

В терминале и далее введя команду:

python manage.py data_loading -h

Для выполнения процедуры загрузки в базу данных необходимо выполнить:

python manage.py data_loading

В случае успешного выполнения данной процедуры будет выведено сообщение в терминал:

Database successfully loaded into models!

При отсутствии csv файла с данными или его неправильного наименования будет выведена ошибка:

Sorry, the file "<название_файла>" does not exist.

При необходимости внести корректировки в данную management-команду Вы сможете найдя её исполняющий файл в папке:

api_yamdb/api_yamdb/reviews/management/commands/data_loading.py

Над проектом работали: