Skip to content

vildan-valeev/tayle_test

Repository files navigation

Описание

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

  • найти и выбрать счет другого пользователя, которому он хочет перевести валюту
  • выбрать один или несколько из своих счетов
  • указать сумму, которую он хочет перевести Сумма для перевода должна быть снята равномерно со всех выбранных пользователем счетов. Так например, если пользователь выбрал 3 своих счета и хочет перевести 300р, то с каждого счета должно быть снято по 100р.

Также должны быть страницы, где пользователь сможет:

  • просматривать все свои переводы, с возможностью пагинации, поиска и фильтрации по счетам (опционально: по дате, сумме перевода)

  • просматривать полную информацию о счете, отдельной страницей Реализовать с помощью Django и Python 3. Прочие инструменты, такие как DRF, Celery: опциональны. Код должен соответствовать PEP8. Плюсом будет покрытие кода юнит-тестами. Необходимо все упаковать в Docker - контейнеры.

Опционально(не обязательно к выполнению):

  • Продумать отмену транзакции

Requirements for dev:

  1. make
  2. docker
  3. docker-compose
  4. python 3.8+

Запуск

Помощь

$ make help

Запуск

$ make develop

Создание пользователя из фикстур(необязательно, если есть db.sqlite3).

docker exec -it app poetry run python manage.py loaddata default_data.json

Database dump/load

$ docker exec -it app sh -c "poetry run python manage.py dumpdata --natural-foreign --natural-primary --exclude=contenttypes --exclude=auth.Permission --exclude=admin.logentry --exclude=sessions.session --indent 4 > default_data.json"
$ docker exec -it app poetry run python manage.py loaddata default_data.json

Enter to container

$ docker exec -it <id container or name> bash
$ docker exec -it <id container or name> poetry run <command>

TODO:

  1. Убрать линтеры из poetry во время сборки
  2. Убрать db из репозитория(добавил для удобства клонирования и запуска, чтобы не возиться с фикстурами)
  3. Написать тесты
  4. настроить постгрес
  5. Добавить логику на reason_choices
  6. Определить стоит ли объединить бизнес логику транзакций из в admins, views и перенести в сигналы. Пока оставил раздельно
  7. Вычистить мусор из static, которые не используются