Skip to content

Komappp/rocketdata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Test task for RocketData

Описание

Технологии:

  • 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", для удобства тестирования.

Releases

No releases published

Packages

No packages published

Languages