Фонд собирает пожертвования на различные целевые проекты: на медицинское обслуживание нуждающихся хвостатых, на обустройство кошачьей колонии в подвале, на корм оставшимся без попечения кошкам — на любые цели, связанные с поддержкой кошачьей популяции.
Python, FastAPI, SQLAlchemy, Alembic, SQLite, GoogleAPI, Uvicorn, Pytest
В Фонде CharityFund может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.
Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.
Целевые проекты создаются администраторами сайта. Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых. Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.
Пользователю доступен отчет (отсортированный список со всеми закрытыми проектами по количеству времени) в гугл-таблице, сохраненный на его гугл-диске.
Создайте виртуальное окружение:
python3 -m venv venv
Активируете виртуальное окружение:
-
Если у вас Linux/macOS
source venv/bin/activate
-
Если у вас windows
source venv/scripts/activate
Установите зависимости:
pip install -r requirements.txt
Заполните .env
ENV_DATABASE_URL - адрес БД, в адресе необходимо указать асинхронный драйвер
(по умолчанию приложение работает на SQLite, с именем `fastapi.db` в корне проекта)
ENV_SECRET - секретный ключ, необходимый для генерации токена (можно указать любую строку)
ENV_FIRST_SUPERUSER_EMAIL - e-mail первого суперпользователя
ENV_FIRST_SUPERUSER_PASSWORD - пароль первого суперпользователя
TYPE, PROJECT_ID, PRIVATE_KEY_ID, PRIVATE_KEY, CLIENT_EMAIL, CLIENT_ID, AUTH_URI, TOKEN_URI, AUTH_PROVIDER_X509_CERT_URL, CLIENT_X509_CERT_URL, EMAIL - данные сервисного акканута в Google Cloud
Примените миграции:
alembic upgrade head
Удостоверьтесь в корректной работе приложения, запустите тесты
pytest
Запустите приложения (после запуска приложения, будет автоматически создан первый суперпользователь с e-mail и password, указанным ранее:
uvicorn app.main:app
Для получения ссылки на отчет нужно обратиться на адрес:
.../google