Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
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