Приложение для создания групповых платежей и отправка письма о создании сбора и платеже.
Данный проект содержит в себе 3 приложения:
- collect
- позволяет работать с групповыми сборами:
- в ней переопределен метод save с установкой значений в поля amount_now and count_people
- имеет класс для выбора причины сбора Reason
- имеет celery задачу на отправку письма при успешном создании сбора
- все get запросы обложены кэшем
- имеет команду наполнения моко данными addcol
- позволяет работать с групповыми сборами:
- payment
- позволяет работать с платежами
- создаёт платежи и привязывает по связи M2M с полем donates с таблицей Collect
- создана celery задача на отправку письма и надобалвении платежа и обработка платежа
- имеет команду наполнения моко данными addpay
- позволяет работать с платежами
- users
- служит для аунтификации пользователя и регистрации пользователя, а также получения токена
- имеет команду наполнения моко данными adduser
- служит для аунтификации пользователя и регистрации пользователя, а также получения токена
Что делает приложение?
Функционал:- Регистрация пользователя, получение токена и использование в запросах bearer token
- Создание группового платежа и отправка письма о его создании с таким содержанием

- Платеж с получением письма о состояние платежа с таким содержанием

- CRUD обложен на групповые сборы, а также ваиладация на актуальную дату времени и права на удаление и обновление только своих сборов
Important
Добавлен файл env-sample (для использования надо привести к ввиду <.env>) с помощью, которого можно настроить работу проекта. В нем лежат настройки (далее идут примеры заполнения полей):
Настройки, которые надо установить для работы приложения
| Значение | Содержание | Примечание |
|---|---|---|
| SECRET_KEY | django-insecure-hu213gr51uh234gbrtf34oqufg35835g3q5g | код генерируется командой описаной ниже |
| POSTGRES_DB | NAME_BD | название базы данных |
| POSTGRES_USER | USER_BD | название пользователя базы данных |
| POSTGRES_PASSWORD | PASSWORD_BD | пароль базы данных |
| POSTGRES_HOST | HOST_BD | название твоего сервиса используемый для контейнеризации |
| SUPERUSER_EMAIL | email_superuser | установить почту суперюзера |
| SUPERUSER_PASSWORD | password_superuser | установить пароль суперюзера |
| USER_PASSWORD | password_user | установить пароль юзера для моко данных |
| ENV_TYPE | local/server | для использования разных настроек для запуска локально-local для запуска с сервера-server |
| HOST_IP | db | id- адрес твоего сервера базы данных |
| EMAIL_HOST_USER | <Твой почтовый адрес> | от кого придет почта |
| EMAIL_HOST_PASSWORD | qweq223e123edqwr | пароль полученный в настройках приложения для почтового сервиса P.S. Далее идет инструкция в картинках |
| EMAIL_BACKEND | django.core.mail.backends.smtp.EmailBackend | Настройка для джанго |
| EMAIL_PORT | 465 | почтовый порт |
| EMAIL_HOST | |
почтовый сервер, в моем случае это яндекс |
| EMAIL_USE_SSL | True | дефолтные настройки для почтового сервиса в моем случае это яндекс |
| CELERY_BROKER_URL | |
база данных для работы celery |
| CELERY_RESULT_BACKEND | |
база данных для работы celery |
| CACHE_LOCATION | redis://127.0.0.1:6379 | подключение к бд редис, если это в докере, то он строится иначе и уже прописан |
Как запустить?
-
Переходим в папку где будет лежать код
-
Копируем код с git:
git@github.com:Plutarxi99/collecting_money.git -
Создаем виртуальное окружение:
python3 -m venv envsource env/bin/activate -
Создать секретный ключ:
openssl rand -hex 32 -
Вставить его в .env
-
Создать базу данных:
psql -U postgrescreate database name_your_db; -
После установки нужных настроук в файле <.env>. Надо выполнить команду для установки пакетов:
pip install -r requirements.txt -
Применить миграции:
python3 manage.py migrate -
Создать суперюзера:
python3 manage.py ccsu -
Создать пользователей системы (P.S можно использовать любой число, есть и другие параметры, смотри в докстринги) смотри код :
python3 manage.py adduser 10 -
Создать групповые сборы (P.S можно использовать любой число):
python3 manage.py addcol 10 -
Создать платежи (P.S можно использовать любой число):
python3 manage.py addpay 10 -
Для запуска работы celery worker:
python3 manage.py celery_workerили использовать иную команду дефолтную
python -m celery -A django worker -l infor
Что использовалось в приложение?
Функционал:- Подключено rest_framework для использоваеть API приложения
- Подключено rest_framework_simplejwt для использоваеть API приложения авторизации пользователя Bearer token
- Подключено drf_yasg для создания автоматической документации и возможность работать в браузере с приложением
- Подключена django_celery для создание и использование отложенной задачи
Как получить пароль почтового сервиса?
Функционал:-
Создать приложение по ссылке и создать приложение <<Почта>> и получить пароль: https://id.yandex.ru/security/app-passwords

-
Скопировать пароль в .env файл оставльные настройка уже готовы.
Как запустить приложение в docker?
Функционал:-
Выполняем код:
docker-compose builddocker-compose up -
Создаем базу данных в контейнере:
docker-compose exec db psql -U postgrescreate database your_name_db -
Подключаемся к контейнеру:
http://127.0.0.1:8080/swagger/
Как использовать приложение в swagger?
Функционал:-
Или запускаем командой из терминала:
python3 manage.py runserver -
Переходим по ссылке: swagger
-
Добавляем к запросам этот токен(P.S. Объязательно добавлять к вашему токену слово Bearer):

-
Используем дальше эндпоинты



