Skip to content

An interactive platform for collecting user reviews of different art forms, categorising them into "Books", "Movies" and "Music" and calculating an average rating for each artwork based on user reviews, powered by Django and DjangoRestFramework.

Notifications You must be signed in to change notification settings

aleksandr-miheichev/review_ratings_platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArtReview Hub

Содержание


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

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

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

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

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

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

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

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


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


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

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

cd
git clone git@github.com: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

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

About

An interactive platform for collecting user reviews of different art forms, categorising them into "Books", "Movies" and "Music" and calculating an average rating for each artwork based on user reviews, powered by Django and DjangoRestFramework.

Topics

Resources

Stars

Watchers

Forks