LMS Backend
===========

Бекенд платформы корпоративного обучения - https://wiki.yandex-team.ru/lms/

|python| |django| |cookiecutter|

.. |python| image:: https://badger.yandex-team.ru/custom/[Python]/[3.8.6][blue]/badge.svg

.. |django| image:: https://badger.yandex-team.ru/custom/[Django]/[3.0.11][blue]/badge.svg

.. |cookiecutter| image:: https://badger.yandex-team.ru/custom/[built%20with]/[Cookiecutter%20Django][ff69b4]/badge.svg
     :target: https://github.com/pydanny/cookiecutter-django/
     :alt: Built with Cookiecutter Django


Установка ПО
------------

Для работы с проектом нужно установить:

- `Docker <https://docs.docker.com/docker-for-mac/install/>`_
- СУБД Postgres (для Mac OS рекомендуется использовать `PostgresApp <https://postgresapp.com/>`_)


Быстрый старт
-------------
1. Создаем в Postgres новую базу данных и пользователя::

    createuser -s lms_dev
    createdb -E UTF8 -l ru_RU.UTF-8 -O lms_dev lms_dev

..

  для справки можно запустить указанные команды с ключом ``--help``


2. Создаем конфиги проекта на основе примеров::

    cp .envs/.local/.django.example .envs/.local/.django
    cp .envs/.local/.postgres.example .envs/.local/.postgres

..

  в ``.envs/.local/.postgres`` прописываем настройки подключения к БД

3. Берём данные TVM из `секретницы <https://yav.yandex-team.ru/edit/secret/sec-01ecpxa3pxbwz8wrn7vdyqfx92/>`_
   и указываем настройки    в файле ``.envs/.local/.django``::

    TVM_CLIENT_ID=
    TVM_CLIENT_SECRET=

4. Пропиcываем в файлик ``/etc/hosts``::

    127.0.0.1 lms-backend.local.yandex.ru

5. Собираем docker-образы: ``docker-compose build``
6. Запускаем миграции БД: ``make migrate``
7. Создаем суперюзера: ``make createsuperuser``
8. Стартуем проект: ``docker-compose up nginx django``
9. Открываем в браузере страницу: https://lms-backend.local.yandex.ru/admin/


Авторизация в админке
---------------------

В django-админке авторизация работает через Я.Паспорт.

Для локальной разработки используется `внешний тестовый паспорт <https://passport-test.yandex.ru>`_.
Рекомендуется создать там отдельный аккаунт.


Разработка
----------

Разрабатываем и тестируем код внутри Docker-контейнеров,
поэтому все команды и тесты запускаем только через ``docker-compose``::

    docker-compose run --rm django ./manage.py <command> <args>

Например, запустить юнит-тесты можно так::

    docker-compose run --rm django pytest lms

..

  Часто используемые команды также есть в `Makefile`.


Возможные проблемы
------------------

Для установки ``psycopg2`` может понадобиться ``pg_config``
Если используется PostgresApp, то его можно найти тут::

  /Applications/Postgres.app/Contents/Versions/<current_version>/bin

Перед установкой выполнить команду::

  export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

