Giter Club home page Giter Club logo

pools's Introduction

#Тестовое задание

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

Задача: спроектировать и разработать 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

pools's People

Contributors

dezhik74 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.