Проект представляет собой API сервис для работы с данными о заказах товаров из таблицы в Google Sheets.
API сервис реализуется на базе фреймворка DRF.
В проекте применяется логирование, обработка исключений при доступе к внешним сетевым ресурсам, конфиденциальные данные хранятся в пространстве переменных окружения. Настроено отображение моделей проекта в панели администратора.
Реализован функционал проверки соблюдения «срока поставки» из таблицы. В случае, если срок поставки прошел, в Telegram отправляется уведомление.
Данные для перевода $ в рубли рассчитываются по актуальному курсу ЦБ РФ с помощью XML котировок.
Задача коллекционирования и проверки данных из Google Sheets реализована в виде асинхронных Celery задач.
Проект разворачивается в следующих Docker контейнерах: web-приложение, postgresql-база данных, nginx-сервер, Redis-база данных и Celery-контейнер.
Тестовая таблица Google Sheets с данными о заказах
- Python 3.6+
- Docker
- Works on Linux, Windows, macOS, BS
- Python 3.8
- Django 3.1
- Django Rest Framework
- PostreSQL
- Nginx
- gunicorn
- Docker
- Celery
- Redis
- Telegram Bot API
- BeautifulSoup4
- Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:NikitaChalykh/API_GoogleSheets_TW.git
cd API_GoogleSheets_TW
- Скачать и скопировать файл credentials.json в корневую папку
/backend
рядом с файломmanage.py
cd backend
* скопируйте скачанный файл через терминал или через finder (проводник) в текущую директорию
- Cоздать файл
.env
в папке/infra
для сохранения переменных окружения:
cd ../infra
touch .env
- Заполнить
.env
файл с переменными окружения по примеру:
echo DB_ENGINE=django.db.backends.postgresql >> .env
echo DB_NAME=postgres >> .env
echo POSTGRES_PASSWORD=postgres >> .env
echo POSTGRES_USER=postgres >> .env
echo DB_HOST=db >> .env
echo DB_PORT=5432 >> .env
echo BROKER=redis://redis >> .env
echo BROKER_URL=redis://redis:6379/0 >> .env
- ID телеграм чата для получения уведомлений
echo CHAT_ID=**************** >> .env
- Установка и запуск приложения в контейнерах:
docker-compose up -d
- Запуск миграций, сбор статики и создание суперпользователя:
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py collectstatic --no-input
docker-compose exec web python manage.py createsuperuser
Документация для API после установки доступна по адресу:
http://127.0.0.1/redoc/
http://127.0.0.1/swagger/