# m3_license

## Использования без django

Есть одна единственная функция `m3_license.api.get_lic_data(xml_file, public_key)`, которая на вход принимает путь до файла лицензии и публичный ключ, а на выходе имеет словарь с содержимым контейнера лицензии. Также способен райзить ошибку `LicenseException` о невалидности лицензии  различного генеза. 
Что нужно чтобы заработал этот метод:

 * Знать где лежит лицензия.
 * Знать публичный ключ


## Использование в django

Тут дело обстоит более радужно. Уже есть целых два (пока) метода взаимодействовать с лицензией. 

Функция `m3_license.api.get_project_lic_data` уже не принимает на вход ничего, а ориентируется на django-проект. Ее выхлоп аналогичен выхлопу функции описанной выше, оберткой которой по-сути и является. 
Что нужно чтобы заработал этот метод:

 * Все пункты из предыдущего пункта
 * В settings.py положить LIC_KEY_FILE где будет лежать путь по файла лицензии
 * Туда же положить PUBLIC_KEY в котором будет публичный ключ

Второй метод заключается в том, чтобы доставать данные по лицензии сразу из запроса. Везде где `request` будет доступен можно будет сделать так: `request.license['LicenseNo']`. Класть его туда будет миддлвара. 
Что нужно чтобы заработал этот метод:

 * Все пункты из предыдущего пункта
 * Добавить `m3_license` в `INSTALLED_APPS`
 * Расширить мидлвары:

    MIDDLEWARE_CLASSES = (
    ...
    'm3_license.middlewarei.LicenseMiddleware',
    ...
    )

## Использование внешними средствами
Теперь перед обновлением программа установки должна иметь возможность проверить актуальность лицензии. Для этого была написана manage-команда которая, если все хорошо имеет код вызод 0, и 1 - в другом случае.

`python manage.py get_license_status`


*ДИСКЛЕЙМЕР*: данные по валидности и содержимому контейнера лицензии (пока) нигде не кешируются, что означает постоянное чтение файла лицензии.

