- Python
- fastapi
- SQLAlchemy
- Клонировать репозиторий
git clone [email protected]:aleksanderZaritskiy/cat_charity_fund.git
- Перейти в директорию с клонированным репозиторием
- установить и развернуть виртуальное окружение
- обновить pip и установить зависимости
- выполнить команду по созданию миграций alembic revision --autogenerate -m 'y. comment'
- выполнить команду для выполнения миграций alembic upgrade head
- для автоматического создания суперюзера при запуске проекта создайте в файле с переменными окружения .env FIRST_SUPERUSER_EMAIL и FIRST_SUPERUSER_PASSWORD
- подключить переменные к core.config.Settings
- запустить проект app.main:app
Для чтения документации к проекту можно выбрать следующие варианты:
- модуль openapi.json из директории проекта вставить в upload file на сайте https://redocly.github.io/redoc/
- запустить проект командой app.main:app, открыть uri по локальному адресу http://127.0.0.1:8000/docs
В app/services/investment.py корутины exc_status_note и investing - выполняют следующую задачу:
Сразу после создания нового проекта или пожертвования должен запускаться процесс «инвестирования» (увеличение invested_amount как в пожертвованиях, так и в проектах, установка значений fully_invested и close_date, при необходимости). Если создан новый проект, а в базе были «свободные» (не распределённые по проектам) суммы пожертвований — они автоматически должны инвестироваться в новый проект*, и в ответе API эти суммы должны быть учтены. То же касается и создания пожертвований: если в момент пожертвования есть открытые проекты, эти пожертвования должны автоматически зачислиться на их счета.
*Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.