Skip to content

traditio/tvigle_test

Repository files navigation

Исходя из задания, что не требуется подключения модуля к веб-сайту,
можно сделать вывод, что модуль никак не завязан на Django или другой подобный фреймворк,
значит нужно писать универсальный модуль.
В задании сказано про использование Python DB Api 2.
SqlAlchemy отлично поддерживает DB API через объекты Connection, и к тому же
из коробки поставляет пул соединений, что важно для мультритредовых приложений, а интернет-сайты
(в большинстве случаев) запускаются на тредовых серверах.

Структуру базы в тестовом задании можно создать 3-мя способами
- сделать файл базы в стороннем приложении и вложить его в задание
- написать скрипт создания БД на чистом SQL
- использовать миграции

Честно говоря, я не удержался от использования миграций, хотя судя по тексту задания можно подумать,
что рекомендуется чистый SQL (возможно, что бы проверить знание ANSI SQL).

Логика работы приложения разделена на модели (User, Permission) и классы контроллеров авторизации и регистрации. Так как
контроллеры не привязаны к какому-либу фреймворку, исключительные ситуации отлавливаются не возвратом данных,
а вызовом исключительных ситуаций. В Django это выглядело бы по-другому, мы бы не кидались исключениями, а определяли
в контроллере "состояние", которое передавали бы шаблон.

"Права" пользователя это ничто иное как простой набор строк. К пользователю можно добавлять права, удалять их и
проверять на наличие.

Токен для подтверждения Email не хранится в базе, а основывается на хеше пароля, который хранится в БД и дате окончания
срока действия токена.

И, разумеется, пароли в базе храним только в зашифрованном виде (SHA-256).

./migrates.sh - запуск создание БД (миграций)
python test.py - запуск тестов


Releases

No releases published

Packages

No packages published