Тестовое задание от Каналсервис
Скрипт для добавления данных с Google Sheets в базу данных PosgreSQL.
- python=3.8.10
- 1.0 Получение данных, при помощи Google Drive API и Google Sheets API
- 2.1 Подключение PostgreSQL
- 2.2 Перевод в рубли по курсу ЦБ - "стоимость в руб."
- 3.0 Обеспечение синхронизации Google Sheets и базы данных
- 4.1 Docker-контейнер
- 4.2 Сообщение через Telegram-бота о "сроках поставки"
- 4.3 Django-приложение с фронт-ендом ReactJS
- 5.0 GitHub с документом Google Sheets
- Склонировать репозиторий с помощью команды:
git clone https://github.com/alinocco/google-sheets.git
- Перейти в папку с проектом:
cd google-sheets
- Установить poetry:
pip install poetry
- Активировать виртуальное окружение:
poetry shell
- Установить зависимости:
poetry install
- Установить Docker и docker-compose с официального сайта
- Подготовить порты для Docker:
sudo service docker start /etc/init.d/redis-server stop sudo service postgresql stop
- Запустить сервисы в Docker (PostgreSQL, Redis, adminer):
Для контейнеризации самого приложения (только для проверки задания 4.1):
sudo docker-compose -f basic-compose.yml up -d --build --remove-orphans
sudo docker-compose -f basic-compose.prod.yml up -d --build --remove-orphans
- Получить креды от внешних сервисов и прикрепить их соответсвенно:
- src/settings/.env
- src/telegram/.env
- credentials.json
Для проверки оставила доступными.
- Применить миграции:
python3 src/manage.py migrate
- Запустить сервер приложения:
python3 src/manage.py runserver
- Запустить Celery в другом терминале:
cd src && celery -A settings worker -B -l INFO
Дополнительно:
- Чтобы проверить задание 4.1 - прописано выше
- Чтобы проверить задание 4.2 - в файле src/telegram/.env необходимо:
- найдите бота @lina_google_sheets_bot
- поменять CHAT_ID на свой ID (можно узнать через @IDBot в Телеграмме)
- поменяйте в src/settings/settings.py CELERY_BEAT_SCHEDULE (для 'send-notification-with-expired-orders' поставьте timedelta(minutes=1) вместо crontab(hour=0, minute=0))
- Чтобы проверить задание 4.3 - веб-страница:
- запустите сервер с командой runserver
- откройте в браузере src/frontend/main.html