Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Реализация системы для обучения с помощью Django REST framework

Небольшой сервис, позволяющий добавлять свои курсы (Products), а также покупать курсы других пользователей.

Описание моделей системы

  • Product - сущность продукта (курса). Содержит информацию о названии продукта, его цене, когда он должен начаться, какие минимальное и максимальное количество человек в группе, а также автора этого курса.
  • Lesson - сущность урока.Содержит информацию о названии урока, к какому курсу этот урок принадлежит и ссылку на видео.
  • Group - сущность группы. В одном курсе может быть несколько групп, алгоритм заполнения групп описан далее. В группе содержится информация о её названии, к какому продукту она принадлежит и какие пользователи в неё входят.

Основные доступные запросы к системе

  • GET api/products - возвращает информацию о всех доступных курсах. В неё входит: все поля модели Product, количество уроков в курсе, количество студентов на курсе, % заполненности групп, % пользователей, которые купили этот курс. Данный запрос не требует авторизации от пользователей. Просматривать курсы может кто угодно.
  • POST api/products - позволяет добавить свой курс, для этого надо быть авторизированным в системе.
  • GET api/products/{id} - получение информации о конкретном курсе с идентификатором id. Если пользователь является автором этого курса, то ему также доступны по этому адресу запросы на удаление и изменение продукта.
  • GET api/products/{id}/lessons - уроки, принадлежащие курсу с идентификатором id. Для получения доступа к этому запросу необходимо купить курс или быть автором этого курса.
  • POST api/products/{id}/lessons - добавление нового урока к продукту. Доступно только для автора курса.
  • GET api/products/{id}/buy - покупка курса. Если пользователь уже приобрёл этот курс ранее, то вернётся сообщение об этом. Иначе пользователь будет добавлен в группу курса по следующему алгоритму, реализованному в app/utils.py :
    • Если это первый ученик на курсе, то просто создаётся новая группа и пользователь добавляется туда.
    • Если группа пока одна и не заполнена до максимального значения, то он будет добавлен в неё.
    • Если все группы на курсе заполены, то будет создана новая группа, посчитаны оптимальные количества человек в группах так, чтобы в идеале они не отличались больше, чем на одного человека, если это возможно, учитывая минимальные значения в группах. Затем пользователи из существующих групп будут перемещены, согласно этим оптимальным значениям, и новый пользователь будет добавлен в группу с наименьшим количеством человек.
    • Если не все группы на курсе заполнены, то пользователь будет добавлен в первую группу с наименьшим количеством человек.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages