Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Микроконтроллеры & Django

# Проект "UniCat" ТЗ

Добавлено 08 ноя 2022 в 16:38
# Проект "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 # Запустятся только тесты на существующий функционал

```


857caf0477