"DiZI IZI" посвящен автоматической планировке помещений.
Пользователю дается возможность внести размеры своего помещения и выбрать мебель, которая там будет стоять. В ответ на полученные данные сайт предоставляет несколько изображений с уже готовой планировкой. У пользователя есть возможность запросить новую планировку при ее неудовлетворительном качестве.
Данный репозиторий - API для сайта "DIZI IZI" совмещенный вместе с алгоритмом обработки данных и вывода координат мебели.
Python 3.11, Django, DRF, Postgres, Docker, Nginx...
Все команды необходимо выполнять в корневой папке проекта
- Установка Docker
- Скопировать и настроить переменные окружения в файле .env
copy .env.example .env
- Запуск проекта (доступно по адресу http://localhost:80)
docker compose up -d
- Остановка проекта и удаление контейнеров и базы данных
docker compose down -v
Админ панель: http://localhost/admin/
Swagger: http://localhost/swagger/
- Запуск только базы данных (доступно по адресу localhost:5432)
docker compose up -d database
- Перезапуск проекта
docker compose restart
- Остановка проекта
docker compose stop
- Отправить команду в контейнер
docker compose exec -it backend <ваша команда> docker compose exec -it database <ваша команда> - Создать суперпользователя:
docker compose exec -it backend python manage.py createsuperuser - Собрать новый образ (по умолчанию образ скачивается с DockerHub)
docker compose build
- Скачать все образы
docker compose pull
Docker так же можно использовать во время разработки.
Для этого корневая папка проекта подключается как внешний том контейнера, и все изменения в проекте мгновенно доступны в контейнере.
Перезапуск сервера с новыми файлами происходит автоматически.
Для разблокировки функционала необходимо в файле docker-compose.yml раскомментировать поле volumes у контейнера backend
В файле .env DB_HOST database заменить на localhost.
Установите переменную окружения PATH_TO_SETTINGS_MODULE в файле .env, указав в значении путь к необходимому модулю настроек, например: 'config.settings.develop'.
Чтобы вернуться к продакшн настройкам, удалите эту переменную, либо измените её значение на 'config.settings.production'.
Рекомендуется настроить в проекте папку виртуального окружения
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
Тестовые пользователи
python manage.py loaddata users.json
Тестовые тарифы
python manage.py loaddata tariffs.json
Тестовые тарифы привязанные к пользователям
python manage.py loaddata tariff_userstariffs.json
Тестовые типы комнат
python manage.py loaddata furniture_roomtype.json
Тестовая мебель
python manage.py loaddata furniture_furniture.json
Тестовые планировки
python manage.py loaddata furniture_roomlayout.json
Загрузка сразу всех тестовых фикстур с моделями
python manage.py loaddata users.json tariffs.json
tariff_userstariffs.json furniture_roomtype.json
furniture_furniture.json furniture_roomlayout.json
pip install -r req_dev.txt
python -m flake8
python manage.py test