https://github.com/aladser/lms
LMS. DRF
https://github.com/aladser/lms
django django-rest-framework docker-compose
Last synced: about 1 month ago
JSON representation
LMS. DRF
- Host: GitHub
- URL: https://github.com/aladser/lms
- Owner: Aladser
- Created: 2024-08-19T02:14:40.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-09-27T12:51:07.000Z (over 1 year ago)
- Last Synced: 2025-04-05T22:43:20.524Z (about 1 year ago)
- Topics: django, django-rest-framework, docker-compose
- Language: Python
- Homepage:
- Size: 290 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LMS
Документация: http://127.0.0.1:8000/redoc/, http://127.0.0.1:8000/swagger/
+ LMS-система, в которой каждый желающий может размещать свои полезные материалы или курсы.
SPA веб-приложение - бэкенд-сервер, который возвращает клиенту JSON-структуры.
+ JWT-авторизация.
+ Тесты
Права пользователей:
+ ``IsModeratorPermission`` - проверка на модератора: могут работать с любыми уроками и уроками, но не могут создавать и удалять
+ ``IsOwnerPermission`` - проверка на создателя объекта: могут работать только со своими курсами
+ ``IsPersonalProfilePermission`` - проверка права редактирования своего пользовательского профиля
## Настройки проекта
* Создать файл *.env* в корне проекта с настройками, аналогичными *.env.example*.
* ``python manage.py createusers`` - создать пользователей
* ``python manage.py seed`` - сидирование таблиц
* JWT - авториазция
* Запуск отложенных задач: ``celery -A config worker -l INFO``
* запуск периодических задач: ``celery -A config worker --beat --scheduler django --loglevel=info``
## Модели
+ ``authen_drf``:
* ``User``: почта, телефон, аватар, страна
* ``Country``
+ ``lms``:
+ ``Course``: название, описание, превью-изображение, владелец, дата последнего обновления
+ ``Lesson``: название, описание, превью-изображение, видеоссылка, курс, владелец
+ ``UserSubscription`` (подписки пользователей на обновления курсов): пользователь, курс
+ ``payment``:
* ``Payment``: пользователь, курс, урок, сумма, id stripe-сессии, ссылка на оплату
## Контроллеры
+ lms
+ ``CourseViewSet`` - вьюсет:
* ``list`` - список всех курсов. Пагинация
* ``create`` - создание курса. Отправка почтовых уведомлений об изменении курса
+ ``LessonListAPIView`` - генерик списка уроков. Пагинация
+ ``LessonRetrieveAPIView`` - генерик одного курса
+ ``LessonCreateAPIView`` - генерик создания курса
+ ``LessonUpdateAPIView`` - генерик обновления курса
+ ``LessonDestroyAPIView`` - генерик удаления курса
+ payment
+ ``PaymentListAPIView`` - генерик списка всех платежей. Пагинация, сортировка по дате оплаты, фильтрация по курсу, уроку, способу оплаты
+ ``PaymentCreateAPIView`` - генерик создания оплаты курса
+ ``show_success_payment`` - страница уведомления об успешной оплате
+ ``PaymentStatusAPIView`` - генерик информации о статусе платежа
+ authen_drf
+ ``UserListAPIView`` - генерик списка пользователей
+ ``UserRetrieveAPIView`` - генерик одного пользователя
+ ``UserUpdateAPIView`` - генерик обновления пользователя
+ ``LoginView``(авторизация, обновление даты последней авторизации)
## Сериализаторы
+ ``authen_drf``:
* ``UserSerializer``
* ``UserDetailSerializer``
+ ``payment (PaymentSerializer)`` - платежи пользователя
+ ``lms``:
* ``CourseSerializer``
+ ``lesson (LessonSerializer)``: информация по всем урокам.
+ ``get_lessons_count()`` - количество уроков
+ ``get_is_user_subscription()`` - проверка подписи на курс авторизованного пользователя
* ``LessonSerializer``
+ валидатор проверки наличия видеоссылок
+ ``payment``:
* ``PaymentSerializer``
## Асихронные задачи
+ ``lms.send_course_updating_notification`` - Отправляет отложенно почтовые уведомления об обновлении курса
+ ``authen_drf.check_user_activities`` - celery-beat периодическая проверка активности пользователей. Если пользователей не заходил больше 7 дней, аккаунт деактивируется.