Skip to content

REST API для автосервиса. Стек: Python, Django, DjangoRestFramework, Docker, PostgreSQL, JWT, Djoser

Notifications You must be signed in to change notification settings

aquaracer/DRF_car_service

Repository files navigation

Техническое задание

Реализовать простейший 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

About

REST API для автосервиса. Стек: Python, Django, DjangoRestFramework, Docker, PostgreSQL, JWT, Djoser

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published