Тестовое CRUD-приложение системы складского учёта на Django 3.0.8
с базой данных SQLite3
.
Как запустить
Один из вариантов - использовать дистрибутив Linux и установленный Docker
(протестировано на Ubuntu 20.04 LTS
с установленным docker.io 19.03.8
).
Будут загружены Docker образы Nginx и Alpine с python3.8,
затем создан образ контейнера приложения Django и два volume - директории для базы данных и статических файлов.
Доступ к сайту будет осуществляться через контейнер Nginx (порт 8888).
Для установки нужно выполнить следующие команды в терминале:
- клонировать репозиторий в нужную директорию, перейти в неё и добавить скрипту
install.sh
разрешение на выполнение
$ git clone https://github.com/96tm/warehouse-management-test.git; cd warehouse-management-test; chmod +x ./install.sh
- запустить скрипт установки, заменив
EMAIL_HOST
на адрес почтового сервера для отправки сообщений,
EMAIL_ADDRESS
на email на указанном почтовом сервере (будет использоваться как email администратора),
EMAIL_PASSWORD
на пароль для email,
CLIENT_EMAIL
на email для тестовых пользователей (можно такой же, какEMAIL_ADDRESS
)
$ sudo ./install.sh "EMAIL_HOST" "EMAIL_ADDRESS" "EMAIL_PASSWORD" "CLIENT_EMAIL"
База будет заполнена тестовыми данными.
Сайт должен быть доступен по адресу
localhost:8888.
Для входа на страницу администрирования можно использовать тестового пользователя admin
с паролем admin
.
Для остановки и удаления приложения нужно выполнить следующие команды в терминале:
$ chmod +x ./uninstall.sh; sudo ./uninstall.sh
Для удаления Docker образов Alpine и Nginx:
sudo docker image rm python:3.8-alpine; sudo docker image rm nginx:latest
Что можно сделать + скриншоты
-
создать поставку на странице /cargo_new
-
создать покупку на странице /order;
-
выбрать созданные поставку и покупку на страницах admin/cargo/cargo и /admin/shipment/shipment;
-
на странице поставки нажать "Подтвердить получение поставки";
-
на странице покупки нажать "Подтвердить готовность к отправке" (если количество товаров в покупке превышает количество товаров на складе, кнопка будет скрыта).