Test Task for vacancy "Backend Django Develop"
Technical Specifications (RU)
Создать Django REST framework приложение, с переопределённым пользователем и списком организаций в которых он состоит.
Две модели
- Пользователь:
- Емайл
- Пароль
- Фамилия
- Имя
- Телефон
- Аватар(фотография).
- Связь на список организаций(может быть больше одной)
- *Базовые (технические) поля django, кроме логина, он не должен использоваться
- Организация:
- Название
- Краткое описание
Функционал. // все запросы делаются через через curl/postman/вебинтерфейс DRF, по RestAPI. Формат данных передаётся в json.
- Создание нового пользователя(регистрация)
- Авторизация пользователя только по емайлу и паролю
- Редактирование своего профиля (изменение данных в профиле)
- Вывод списка всех пользователей и связанные с ними организации
- Вывод одного пользователя по его ID, со списком связанных с ним организаций
- Добавление новой организации
- Вывод списка всех организаций
Дополнительный функционал. // по желанию:
- Вывод списка всех организаций(п.6 выше), со списком пользователей, которые связаны с каждой из них.
- Аватар/фотография пользователя, картинка должна при загрузке переименовываться [a-zA-Z0-9]. А так же resize(уменьшить) до размеров не больше 200х200 px.
- Авторизация пользователя должна происходить через JWT, передача приватных данных(изменения профиля), происходят через этот токен. Можно использовать отдельную библиотеку.
- Добавить unit-test
Требования.
- Python 3.8+
- Проект должен быть залит на Github/Bitbucket и быть публичным.
- Проект должен быть в виртуальном окружении venv. Должен присутствовать файл со списком используемых в проекте пакетов и их версий.
- База данных по умолчанию от django: sqlite3
- Описание какие методы есть, какие параметры они принимают, какие отдают.
Дополнительные комментарии. // Для успешного решения задания потребуется знание следующих вещей:
- Знание языка программирования Python и его синтаксиса.
- Знание фреймворка Django и Django REST framework для создания веб-приложений.
- Понимание работы с базой данных, в данном случае SQLite3, в контексте Django.
- Умение создавать модели данных с помощью Django ORM.
- Понимание работы REST API и умение описывать и реализовывать его эндпоинты.
- Разработка и использование JWT-токенов для аутентификации пользователей. (Или умение разбираться в чужих библиотеках, читать документацию и т д)
- Знание и понимание основных принципов аутентификации и авторизации пользователей.
- Умение работать с файлами и изображениями, включая их загрузку, переименование и изменение размера.
- Навык написания и выполнения unit-тестов для проверки функциональности вашего приложения. (мало кто умеет это, т.к. обычно бизнес считает, что тесты не нужны, т.к. дорого)
- Умение создавать и использовать виртуальное окружение для изолированной разработки и управления зависимостями пакетов.
По времени. Выполнение занимает 8-12 часов работы. По календарным срокам, с учетом отвлечений/работы/учёбы, неделя, если выполнение будет быстрее - будет хорошо!
- docker-compose
- swagger
- admin panel
- ruff, mypy configs
- mypy stubs
- JWT-authentication
- pipenv (can be used inside of venv)
.vscode/lauch.json
.vscode/settings.json
- user registration, authorization by email, password
- retrieving user, users for admins
- retrieving user data for all authenticated users
- user's avatar upload, download