Skip to content

Latest commit

 

History

History
83 lines (70 loc) · 5.61 KB

README.md

File metadata and controls

83 lines (70 loc) · 5.61 KB

test_task_django

Test Task for vacancy "Backend Django Develop"

Technical Specifications (RU)

Создать Django REST framework приложение, с переопределённым пользователем и списком организаций в которых он состоит.

Две модели

  • Пользователь:
  • Емайл
  • Пароль
  • Фамилия
  • Имя
  • Телефон
  • Аватар(фотография).
  • Связь на список организаций(может быть больше одной)
  • *Базовые (технические) поля django, кроме логина, он не должен использоваться
  • Организация:
  • Название
  • Краткое описание

Функционал. // все запросы делаются через через curl/postman/вебинтерфейс DRF, по RestAPI. Формат данных передаётся в json.

  1. Создание нового пользователя(регистрация)
  2. Авторизация пользователя только по емайлу и паролю
  3. Редактирование своего профиля (изменение данных в профиле)
  4. Вывод списка всех пользователей и связанные с ними организации
  5. Вывод одного пользователя по его ID, со списком связанных с ним организаций
  6. Добавление новой организации
  7. Вывод списка всех организаций

Дополнительный функционал. // по желанию:

  1. Вывод списка всех организаций(п.6 выше), со списком пользователей, которые связаны с каждой из них.
  2. Аватар/фотография пользователя, картинка должна при загрузке переименовываться [a-zA-Z0-9]. А так же resize(уменьшить) до размеров не больше 200х200 px.
  3. Авторизация пользователя должна происходить через JWT, передача приватных данных(изменения профиля), происходят через этот токен. Можно использовать отдельную библиотеку.
  4. Добавить unit-test

Требования.

  1. Python 3.8+
  2. Проект должен быть залит на Github/Bitbucket и быть публичным.
  3. Проект должен быть в виртуальном окружении venv. Должен присутствовать файл со списком используемых в проекте пакетов и их версий.
  4. База данных по умолчанию от django: sqlite3
  5. Описание какие методы есть, какие параметры они принимают, какие отдают.

Дополнительные комментарии. // Для успешного решения задания потребуется знание следующих вещей:

  1. Знание языка программирования Python и его синтаксиса.
  2. Знание фреймворка Django и Django REST framework для создания веб-приложений.
  3. Понимание работы с базой данных, в данном случае SQLite3, в контексте Django.
  4. Умение создавать модели данных с помощью Django ORM.
  5. Понимание работы REST API и умение описывать и реализовывать его эндпоинты.
  6. Разработка и использование JWT-токенов для аутентификации пользователей. (Или умение разбираться в чужих библиотеках, читать документацию и т д)
  7. Знание и понимание основных принципов аутентификации и авторизации пользователей.
  8. Умение работать с файлами и изображениями, включая их загрузку, переименование и изменение размера.
  9. Навык написания и выполнения unit-тестов для проверки функциональности вашего приложения. (мало кто умеет это, т.к. обычно бизнес считает, что тесты не нужны, т.к. дорого)
  10. Умение создавать и использовать виртуальное окружение для изолированной разработки и управления зависимостями пакетов.

По времени. Выполнение занимает 8-12 часов работы. По календарным срокам, с учетом отвлечений/работы/учёбы, неделя, если выполнение будет быстрее - будет хорошо!

Configs, utils

  • 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

Functionality

  • user registration, authorization by email, password
  • retrieving user, users for admins
  • retrieving user data for all authenticated users
  • user's avatar upload, download