Приложение позволяет вести учет новых произведенных изделий (в данном случае - роботов). Формировать статистику по производству в виде загружаемого файла XLXS. Создавать заказ-ожидание на нового робота с уведомлением по email.
Python
Django
openpyxl
django-environ - для хранения переменных окружения в файле .env
sqlite3
- Запись в базе данных нового произведенного робота от лица сотрудника. API ендпойнт, принимает данные в теле POST-запроса.
- Возможность скачать отчет о количестве произведенных за неделю роботов по моделям в виде файла XLXS для руководства.
- Создание заказа от лица клиента на модель робота и получение уведомления на email в случае, когда такой робот был произведен.
Подробнее описание задач, которые решает данных функционал - в файле tasks.md.
На ендпойнт /robots/create/
отправляется POST-запрос вида:
POST /robots/create/ HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: application/json
{"model":"XX","version":"YY","created":"YYYY-MM-DD HH:MM:SS"}
Где:
- XX - модель робота
- YY - версия робота
- YYYY-MM-DD HH:MM:SS - дата производства
Запрос на этот ендпойнт отправляется пользователем без авторизации.
Если валидация данных из запроса прошла успешно, то ендпойнт вернет ответ 201 CREATED:
HTTP 201 CREATED
Content-Type: text/html; charset=utf-8
Date:
Server:
Content-Length:
Если при валидации данных возникла ошибка, то вернется ответ 400 Bad Request.
При попытке отправки GET-запроса на этот ендпойнт вернется ответ 403 Forbidden.
Скачивание файла по URL:
/robots/week/
При GET-запросе на этот URL происходит формирование XLSX-файла. В него записываются данные о количестве произведенных роботов за последние 7 дней, включая сегодняшний. В файле данные расположены на разных страницах, на каждой из которых представлена информация об одной модели робота с детализацией по версии.
Если за этот период времени новых роботов в базе данных не найдено, возникнет ошибка EmptyResultSet "No new robots".
Создать нового клиента через админ-панель Django с указанием его email-адреса.
Создать новый заказ на робота по URL /order/add/
.
При внесении в базу данных информации о произведенном роботе обрабатывается сигнал. Если существует активный заказ на робота данного серийного номера, то отправляется email c уведомлением клиенту того заказа, который был создан раньше других. После отправки email снимается статус активного с этого заказа.
- Скопировать файлы:
$ git clone https://github.com/minaton-ru/robots-service.git
- Создать файл
.env
для переменных окружения DEBUG, SECRET_KEY и для параметров email-сервера. Пример файла:
DEBUG=True
SECRET_KEY=''
EMAIL_HOST=localhost
EMAIL_PORT=25
EMAIL_HOST_USER=user
EMAIL_HOST_PASSWORD=password
- Установить зависимости, применить миграции, создать администратора:
$ cd robots-service
$ virtualenv venv
$ source venv/bin/activate
(venv) $ pip install -r requirements.txt
(venv) $ python manage.py migrate
(venv) $ python manage.py createsuperuser
(venv) $ python manage.py runserver
- Через Postman отправить POST-запросы с помощью коллекции robots_service.postman_collection.json.
В файлах tests.py находятся тесты.
Для запуска тестов:
python manage.py test
- Авторизация при POST-запросе на создание нового робота
- Возвращать json с данными объекта при успешном POST-запросе на создание нового робота
Давным-давно, в далёкой-далёкой галактике, была компания производящая различных роботов.
Каждый робот (Robot) имел определенную модель выраженную двух-символьной последовательностью(например R2). Одновременно с этим, модель имела различные версии (например D2). Напоминает популярный телефон различных моделей (11,12,13...) и его версии (X,XS,Pro...). Вне компании роботов чаще всего называли по серийному номеру, объединяя модель и версию (например R2-D2).
Также у компании были покупатели (Customer) которые периодически заказывали того или иного робота.
Когда роботов не было в наличии - заказы покупателей (Order) попадали в список ожидания.
Это заготовка для сервиса, который ведет учет произведенных роботов,а также выполняет некие операции связанные с этим процессом.
Сервис нацелен на удовлетворение потребностей трёх категорий пользователей:
- Технические специалисты компании. Они будут присылать информацию
- Менеджмент компании. Они будут запрашивать информацию
- Клиенты. Им будут отправляться информация