Skip to content

usdocs/QRkot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QRkot_spreadseets

Python FastAPI SQLAlchemy Alembic Uvicorn Pydantic FastAPI_Users aiogoogle

приложение для Благотворительного фонда поддержки котиков QRKot с функцией выгрузки отчета о закрытых проектах

Фонд собирает пожертвования на различные целевые проекты: на медицинское обслуживание нуждающихся хвостатых, на обустройство кошачьей колонии в подвале, на корм оставшимся без попечения кошкам — на любые цели, связанные с поддержкой кошачьей популяции.

В Фонде QRKot может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.

Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.

Добавлена возможность для суперюзера формирования отчёта в гугл-таблице. В таблицу выгружаются закрытые проекты, отсортированные по скорости сбора средств — от тех, что закрылись быстрее всего, до тех, что долго собирали нужную сумму.

Технологии проекта

  • Python — высокоуровневый язык программирования.
  • FastAPI — веб-фреймворк для создания API, написанный на Python. FastAPI активно использует декораторы, аннотации типов и интроспекцию кода, что позволяет уменьшить количество шаблонного кода в веб-приложении.
  • SQLAlchemy — Программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM.
  • Alembic — библиотека для миграции к базе данных. Поддерживает возможность создания автоматических миграций на основе SqlAlchemy. Этот брокер сообщений используется в крупных приложениях для асинхронного отказоустойчивого обмена данными. Для асинхронного Python не имеет альтернатив.
  • Uvicorn — реализация веб-сервера ASGI для Python. До недавнего времени в Python отсутствовал минимальный низкоуровневый интерфейс сервера / приложения для асинхронных фреймворков. Спецификация ASGI восполняет этот пробел и означает, что теперь мы можем приступить к созданию общего набора инструментов, который можно использовать во всех async-фреймворках.
  • Pydantic — это библиотека Python, созданная Сэмюэлем Колвином, которая упрощает процесс проверки данных. Это универсальный инструмент, который можно использовать в различных сферах, таких как создание API, работа с базами данных и обработка данных в проектах. Библиотека имеет простой и интуитивно понятный синтаксис, позволяющий легко определять и проверять модели данных.
  • FastAPI Users — самая популярная и многофункциональная библиотека для управления пользователями.
  • aiogoogle — асинхронная библиотека для работы с Google API

Как запустить проект:

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:usdocs/QRkot.git
cd QRkot

Создать и активировать виртуальное окружение:

python -m venv venv
source venv/Scripts/activate

Обновить менеджер пакетов pip:

python -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:

pip install -r requirements.txt

Выполнить миграции:

alembic upgrade head

Запустить проект:

uvicorn app.main:app

Полный список запросов API находятся в документации

Ознакомиться с полным функционалом и примерами можно по эндпоинту http://127.0.0.1:8000/redoc

Автор: Балакин Андрей