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

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages