Skip to content

NikitaChalykh/API_GoogleSheets_TW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REST API для получения данных о заказах из Google Sheets

Функциональные требования

Ссылка на техническое задание

Описание проекта

Проект представляет собой 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

Установка проекта из репозитория (Linux и macOS)

  1. Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:NikitaChalykh/API_GoogleSheets_TW.git

cd API_GoogleSheets_TW
  1. Скачать и скопировать файл credentials.json в корневую папку /backend рядом с файлом manage.py
cd backend

* скопируйте скачанный файл через терминал или через finder (проводник) в текущую директорию
  1. Cоздать файл .env в папке /infra для сохранения переменных окружения:
cd ../infra

touch .env
  1. Заполнить .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
  1. Установка и запуск приложения в контейнерах:
docker-compose up -d
  1. Запуск миграций, сбор статики и создание суперпользователя:
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/