Технологии:
- Python 3.8.10
- Django 4.1.3
- DRF 3.14.0
- PostgreSQL 12
- Celery 5.2.7
- Redis 5.0.7
Веб-приложение с API - интерфейсом на Django. Реализована модель сети по продаже электроники. Сеть представляет собой иерархическую структуру из 5 уровней:
- Завод
- Дистрибьютор
- Дилерский центр
- Крупная розничная сеть
- Индивидуальный предприниматель.
Каждое звено сети обладает следующими элементами:
- Название
- Электронная почта
- Страна
- Город
- Улица
- Номер дома
- Продукты: -- Название -- Модель -- Дата выхода продукта на рынок
- Сотрудники
- Поставщик (предыдущий по иерархии объект сети)
- Задолженность перед поставщиком в денежном выражении с точностью до копеек
- Время создания (заполняется автоматически при создании).
Сделан вывод в админ-панели созданных объектов. Написан «admin action», очищающий задолженность перед поставщиком у выбранных объектов. Если количество удаляемых объектов больше 20 удаление производится асинхронно при помощи Celery.
При помощи DRF, написан API позволяющий зарегистрироваться сотруднику и получить информацию о компаниях и продуктах. По запросу на адрес api/v1/companies/<company_id>/get_qr на имейл сотрудника отправляется QR-код с адресом компании, отправка выполняется асинхронно при помощи Celery. Регистрация и аутентификация реализована при помощи JWT. У сотрудников есть доступ только к своей компании.
Для заполнения БД тестовыми данными использована библиотека Mimesis, импорт запускается при помощи BaseCommand.
Написано несколько celery задач: • Задача запускается автоматически каждые 3 часа и увеличивает задолженность перед поставщиком на случайное число от 5 до 500; • Задача запускается автоматически в 6:30 каждый день и уменьшает задолженность перед поставщиком на случайное число от 100 до 10 000
Склонируйте репозиторий на локальный компьютер. Установите виртуальное окружение. Установите зависимости из requirements.txt. В директории backend/backend с настройками Django по шаблону .envTemplate создайте файл .env с вашими настройками redis, smtp, PostgreSQL. Примените миграции, наполните БД тестовыми данными, запустите сервер, и создайте суперпользователя следующими командами:
python manage.py migrate
python manage.py import_test_data
python manage.py runserver
python manage.py createsuperuser
Далее в той же директории в двух разных терминалах запустите worker и beat следующими командами
celery -A backend worker -l info
celery -A backend beat -l info
По адресам http://127.0.0.1:8000/swagger и http://127.0.0.1:8000/redoc доступна вся документация по API. Для всех тестовых пользователей установлен пароль "1", для удобства тестирования.