#Тестовое задание
У текущего тестового задания есть только общее описание требований, конкретные детали реализации остаются на усмотрение разработчика.
Задача: спроектировать и разработать API для системы опросов пользователей.
Функционал для администратора системы:
- авторизация в системе (регистрация не нужна)
- добавление/изменение/удаление опросов. Атрибуты опроса: название, дата старта, дата окончания, описание. После создания поле "дата старта" у опроса менять нельзя
- добавление/изменение/удаление вопросов в опросе. Атрибуты вопросов: текст вопроса, тип вопроса (ответ текстом, ответ с выбором одного варианта, ответ с выбором нескольких вариантов)
Функционал для пользователей системы:
- получение списка активных опросов
- прохождение опроса: опросы можно проходить анонимно, в качестве идентификатора пользователя в API передаётся числовой ID, по которому сохраняются ответы пользователя на вопросы; один пользователь может участвовать в любом количестве опросов
- получение пройденных пользователем опросов с детализацией по ответам (что выбрано) по ID уникальному пользователя
Использовать следующие технологии: Django 2.2.10, Django REST framework.
Результат выполнения задачи:
- исходный код приложения в github (только на github, публичный репозиторий)
- инструкция по разворачиванию приложения (в docker или локально)
- документация по API
#Описание выполненной работы
Предполагаем, что валидация правильных ответов ( в случае выбора) делается во фронтенде.
#API опросов
/polls
[GET]
вывод ВСЕХ опросов (в том числе просроченных опросов)
поля: name, start_date, end_date
/active-polls
[GET]
вывод активных опросов (с датой окончания больше или равной текущей)
поля: name, start_date, end_date
/poll/int:pk
[GET]
по номеру опроса выводит его инфу для формирования фронтэнда ответа на опрос с вложенными вопросами и вариантами ответа
/person/int:pk
[GET]
по номеру юзера выводит детализорованный отчет по всем опросам, в которых участвовал юзер
/create-poll-result
[POST]
по id юзера (если не было такого id, создается новый юзер) создается ответ на опрос.
{'poll_result_name': "Опрос 1",
'usr' : 2, #id пользователя
'poll' : 2, # номер опроса
"poll_result_questions": [
{
"question_text": "Опрос 1 Вопрос 1",
"answers": [
{
"answer_text": "произвольный ответ"
}
]
.......
}
.......
]
}
#Развертывание в контейнерах докер. Рабочий порт - 84. Сделать git clone, если надо, установить права на исполнение файла pools_init.sh далее в каталоге pools запустить docker-compose up, и все должно заработать.
Если не хочется в контейнерах, то можно с использованием venv.
Вход в админку admin, пароль 1234