Skip to content

Latest commit

 

History

History
76 lines (66 loc) · 5.08 KB

README.md

File metadata and controls

76 lines (66 loc) · 5.08 KB

Телефонная книга

Тестовое задание для участие в проекте "Любимовка"

Подготовка проекта

Создать и активировать виртуальное окружение, установить зависимости:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Переименовать файл .env.example (/project_dir/reference_book/reference_book/.env.example) в .env и указать в нем недостающую информацию:

Для генерации SECRET_KEY:

openssl rand -hex 32

Полученное значение копируем в .env

Создать базу и применить миграции:

Из директории /project_dir/reference_book/ выполнить:

python manage.py migrate

Запустить проект:

python manage.py runserver

Перед деплоем необходимо установить для переменной Debug значение False в /project_dir/reference_book/reference_book/settings.py

Описание эндпоинтов

Корневой адрес API: http://127.0.0.1:8000/api/v1/ Далее эндпоинты указаны без учета корневого адреса. Автоматически сгенерированная документация: http://127.0.0.1:8000/api/v1/swagger/

Пользователи:

Эндпоинт Описание
users/ Создание пользователя через POST-запрос (email + password)
users/me/ Просмотр информации о пользователе с возможностью редактирования (требуется аутентификация)

Аутентификация:

Эндпоинт Описание
auth/token/ Получение пары token/refresh token через POST-запрос (email + password)
auth/token/refresh/ Обновление токена через POST-запросе (refresh token)

Организация:

Эндпоинт Описание
organizations/ Перечень организаций
organizations/search?q=query Поиск по названию организации, ФИО сотрудника и номеру телефона
organizations/new/ Создание новой организации (требуется аутентификация)
organizations/<id>/ Просмотр, изменение данных организации, удаление организации (доступно только владельцу организации)

Сотрудники:

Эндпоинт Описание
organizations/<org_id>/employees/ GET-запрос - перечень сотрудников организации; POST-запрос - создание нового сотрудника (доступно владельзу и пользователям с правами редактирования)
organizations/<org_id>/employees?q=query Поиск по номеру телефона, а также по ФИО и должности сотрудника в рамках организации
organizations/<org_id>/employees/<id>/ Просмотр, изменение данных организации, удаление организации (доступно владельцу и пользователям с правами редактирования). Изменение данных о телефонах - через эндпоинты для телефонов

Телефоны:

Доступны владельцу и пользователям с правами редактирования

Эндпоинт Описание
organizations/<org_id>/employees/<emp_id>/phones/ GET-запрос - просмотр телефонов конкретного сотрудника; POST-запрос - добавление нового телефона
organizations/<org_id>/employees/<emp_id>/phones/<id> Просмотр, изменение данных телефона, удаление телефона

Ограничения:

  • У сотрудника должен быть как минимум 1 номер телефона;
  • Создать организацию с одинаковым названием нельзя;
  • Внутри одной организации не может быть сотрудников с одинаковыми ФИО;
  • Номера телефонов отображаются в формате +79161234567;
  • Рабочие телефоны/факсы могу быть одинаковыми для нескольких сотрудников, но личные — нет.

P.S.: Документацию писал в ночи, надеюсь не сильно много опечаток :)