Реализовать простейший REST WebAPI на Python реализующий работу с какими-либо сущностями по CRUD сценарию:
Выдача списка сущностей с сортировкой, фильтрацией и разбиением на страницы.
Выдача конкретной сущности.
Редактирование/добавление сущностей с проверкой корректности введённых данных.
Удаление сущности.
Так же должна быть предусмотрена авторизация пользователей и несколько ролей для них.
Данные должны храниться в БД, для взаимодействия с БД необходимо использовать ORM Django. Сущности должны включать хотя бы одну дочернюю сущность (несколько связанных таблиц в БД).
Данные поступающие в API должны проверяться, желательно использовать библиотеку Django REST Framework.
Архитектура API должна быть построена с использованием паттернов проектирования с расчётом на большое приложение.
Можно реализовать любую клиентскую часть для демонстрации, но фокус должен быть сделан на серверной части.
В качестве реализация данного задания создано REST API приложение для небольшого автосервиса. Использована библиотека Django REST Framework. Приложение реализует следующий функционал:
- Вывод списка категорий услуг. Вывод информации об отдельной категории. Редактирование категории. Удаление категории
- Вывод списка услуг c возможностью фильтрации по категории и сотруднику, выполняющему данную услугу. Сортировка по стоимости услуги и по названию.
- Вывод полной информации об отдельной услуге. Редактирование и удаление информации об услуге.
- Вывод списка сотрудников. Вывод информации об отдельном сотруднике. Редактирование и удаление информации о сотруднике
- Пагинация страниц
- Валидация вводимых данных при создании сущностей производится соответствующими сериализаторами
- Регистрация и авторизация пользователей посредством токена и сессий(использование сессий было включено исключительно для удобства тестирования приложения через браузерное апи). Роль пользователя определяется принадлежностью к соответствующей группе. Созданы следующие группы: editor, moderator, superuser. При регистрации новый пользователь по умолчанию получает роль editor.
Editor - имеет доступ для чтения ко все разделам приложения. Может создавать и редактировать услуги.
Moderator - имеет доступ для чтения ко все разделам приложения. Может создавать, редактировать и удалять услуги. Добавлять новых сотрудников и редактировать информацию об имеющихся сотрудниках.
Superuser - Имеет полный доступ ко все разделам приложения
Неаутентифицированные пользователи имеют только доступ для чтения ко все разделам приложения.
- клиентская часть реализована посредством браузерного апи DjangoRestFramework