Skip to content

AntonZelinsky/Technical_task_for_students_Yandex.Practicum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Тестовое задание для студентов Яндекс.Практикума с Backend факультета.

Необходимо написать справочник-телефонную книгу организаций.

Справочник представляет собой API приложение(DRF) для поиска номеров телефонов и информации об организациях. Визуальное представление не требуется, только API.

Основные требования и возможности:

  • Информация, хранимая об организации: адрес, название, описание и список сотрудников.
  • У каждого сотрудника есть ФИО, должность и номера телефонов.
  • Номера телефонов могут быть различных типов: Рабочий, Личный, Факс. Но хотя бы один номер телефона у сотрудника должен быть обязательным.
  • Рабочие телефоны могу быть одинаковыми для нескольких сотрудников, но личные — нет.
  • Создать организацию с одинаковым названием нельзя.
  • Номера телефонов должны храниться в международном формате E.123: +7 916 1234567.
  • Аутентификация в приложении должны быть реализована через email и пароль.
  • Пользователь сайта и сотрудник фирмы — это две разные сущности и между собой не связаны.

Общий интерфейс авторизованного и неавторизованного пользователя:

При запросе к API на получение списка организаций, данные выводятся в следующей структуре.

Пример иерархии №1:

Результаты:

  • ООО Ромашка
    • Иванов Сергей Петрович (Инженер)
      • Факс: +74951234567
    • Басурман Иван Павлович (Бухгалтер)
      • Рабочий: +79161234567
      • Факс: +74951234567
  • ООО Василек
    • Цветкова Яна Ивановна (Программист)
      • Личный: +79161234567
      • Факс: +74951234567
  • ООО Гремучая ива
  • И так далее

Обратите внимание, что для доступа к странице конкретной фирмы или сотрудника, необходимо так же выводить их id.

Для вывода списка организаций, элементов поиска и сотрудников организации, всегда используем пагинатор. Стандартное количество элементов на всех страница — 10 штук, но пользователь может менять количество элементов с помощью параметров запроса.

При запросе конкретной организации выводится список всех сотрудников с их должностями и номерами телефонов, формат аналогичен формату выше.

Возможности авторизованного пользователя.

Не авторизованный пользователь может только просматривать информацию.

Обычный авторизованный пользователь может:

  • Создавать организации
  • Посмотреть список организаций, в которых он может изменять данные сотрудников.
  • Добавлять и удалять сотрудников, редактировать их ФИО, должности и номера телефонов.

Создатель организации имеет дополнительные права:

  • Предоставить по email доступ любому пользователю к редактированию организации.
  • Просмотреть список пользователей, которым доступно редактирование созданных им организаций.
  • Отозвать права на редактирование.
  • Изменять информацию об организации: адрес, название и описание.

Интерфейс суперпользователя (Django Admin).

  • Необходимо добавить все модели в админку джанго, чтобы суперпользователь мог редактировать оттуда любую информацию.

Разработка

  • Создайте пустой репозиторий и работайте в нем, когда будете готовы — запуште изменения и пришлите ссылку на репозиторий.
  • Выделите наиболее важные задачи в этом проекте и делайте в зависимости от приоритета. Лучше сделать половину задач и будет цельное рабочее приложение, чем много мелких, но основная задача выполняться не будет.
  • Разрабатывать приложение необходимо на Django REST Framework.
  • Вы свободны в выборе библиотек необходимых для выполнения задания.
  • Надо описать README.md файл с инструкцией по запуску.
  • Ключевые моменты: архитектура приложения и качество кода.
  • Приветствуются любые дополнения к данному ТЗ: весь дополнительный функционал необходимо описать в README.md.
  • Допускаются небольшие отступления от ТЗ.

Задание со звёздочкой*:

  • Добавьте поиск в приложение: поиск должен осуществляется по названию организации, ФИО сотрудника и номеру телефона. В результатах поиска выводится название организации и первые 5 сотрудников, подходящих под условия поиска. Или просто название организации, если в ней нет сотрудников, подходящих под условия поиска. Если какого-то телефона нет, он не показывается. Примеры ответов ниже показывают ожидаемую иерархию данных.

Поиск представляет собой API вида /search?q=Метал

Пример 2: Пример иерархии: Металл

Результаты:

  • ООО Заборы из металла
  • ОГО Металлические нервы
  • ОАО Металлург
  • ООО Облака
    • Металлист Виктор Сергеевич (Программист)
      • Личный: +79161234567
      • Факс: +74951234567
  • И так далее

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published