# Проект "UniCat"### ЦельСервис, который позволяет сравнить несколько товаров между собой по общим характеристикам
### Описание- регистрация для обычного пользователя и представителя магазина
- авторизация для обычного пользователя и представителя магазина
- каталог товаров
- карточки товаров
- просмотр характеристик товара, рейтинга, комментарев
- редактирование
- удаление
- подтверждение товара магазином
+ генерация QR для товара (ссылки в разных магазинах)
- поиск по названию товара
- поиск товара по qr
- внутренняя валюта
- рейтинг товара
- комментарии к товару (обзоры)
### Технологический стек:- Python 3.6
- Django 4.0+
- SQLite 3.22+
### Инструкция по настройке проекта:1. Склонировать проект
2. Открыть проект в PyCharm с наcтройками по умолчанию
3. Создать виртуальное окружение (через settings -> project "simple votings" -> project interpreter)
4. Открыть терминал в PyCharm, проверить, что виртуальное окружение активировано.
5. Обновить pip:
```bash
pip install --upgrade pip
```
6. Установить в виртуальное окружение необходимые пакеты:
```bash
pip install -r requirements.txt
```
7. Синхронизировать структуру базы данных с моделями:
```bash
python manage.py migrate
```
8. Создать суперпользователя
```bash
python manage.py shell -c "from django.contrib.auth import get_user_model; get_user_model().objects.create_superuser('vasya', '
1@abc.net', 'promprog')"
```
9. Создать конфигурацию запуска в PyCharm (файл `manage.py`, опция `runserver`)
Внимание! Создана отдельная модель пользователя в модуле `main`!
При создании ForeignKey'ев на User'а - использовать её при помощи встроенной функции `get_user_model`.
## Детальное описание### Пользователь* Система регистрации и авторизации
* Пользователи могут просматривать сравнения товаров и обзоры на них
* Пользователь может создавать карточки товаров
* Человек может оценить товар и оставить свой отзыв (обзор на товар)
### Представитель магазина* Должен подтвердить своё право на представление интересов конкретного магазина
* Может просматривать товары и отмечать те, которые действительно существуют и доступны к продаже в «его» магазине
* После прохождения данной валидации товар становится «подтверждённым»
* Может создавать категории товаров и характеристики для катеририй
* Осуществляет первичную проверку карточки товара
* Может редактировать и удалять карточки товаров
* Может всё, что может обычный пользователь
### Карточка товара* Содержит в себе фотографии, характеристики товара
* В карточке товара показывается его рейтинг и отзывы
* Если товар «подтверждённый», то в нём также отображается информация о магазинах, которые подтвердили его наличие у себя
### Рейтинг товара* Пользователи могут оценивать товар по системе 5 звёзд
* Рейтинг товара базово рассчитывается, как средняя оценка от всех отзывов
### Обзор на товар* Его может создать любой пользователь
* Создавать обзор можно только на «подтверждённый» товар
* Внутри него автор может написать некоторую статью и прикрепить различные файлы (например, изображения, файлы с кодом и т.д)
### Запуск pylint```bash
pylint --load-plugins pylint_django --django-settings-module=simple_votings.settings -j 0 main simple_votings manage.py
```
### Запуск тестов```bash
python manage.py test # Запустятся все тесты (в том числе и те, которые покрывают ненаписанный функционал)
```
```bash
python manage.py test --exclude-tag=future # Запустятся только тесты на существующий функционал
```