Fix pylint, add documentation gen script
This commit is contained in:
parent
9f2d9f11ae
commit
fbc6535975
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/django,pycharm+all,python,linux,macos,windows
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=django,pycharm+all,python,linux,macos,windows
|
||||
|
||||
README.rst
|
||||
|
||||
### Django ###
|
||||
*.log
|
||||
|
@ -37,7 +37,7 @@ limit-inference-results=100
|
||||
# List of plugins (as comma separated values of python module names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=pylint_django
|
||||
django-settings-module=access_controller_new.access_controller.settings
|
||||
django-settings-module=access_controller.settings
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
18
README.md
18
README.md
@ -149,22 +149,24 @@ docker run -d -p 8000:8000 \
|
||||
Пример полной конфигурации можно найти в [.env.example](.env.example). Почту и токен админа ZenDesk взять у руководителя (если вы не админ).
|
||||
|
||||
## Для проверки pylint используем:
|
||||
pylint --django-settings-module=access_controller.access_controller.settings ../access_controller (каталог, где лежит проект)
|
||||
```bash
|
||||
pylint main
|
||||
```
|
||||
|
||||
## Для приведения файлов к стандарту PEP8 используем:
|
||||
```bash
|
||||
autopep8 --in-place filename
|
||||
```
|
||||
|
||||
##Для проверки орфографии:
|
||||
```bash
|
||||
cd docs
|
||||
|
||||
make spelling
|
||||
```
|
||||
##Для обновления документации:
|
||||
m2r README.md
|
||||
|
||||
cd docs
|
||||
|
||||
make html
|
||||
|
||||
```bash
|
||||
./documentation.sh
|
||||
```
|
||||
|
||||
## Read more
|
||||
- Zenpy: [http://docs.facetoe.com.au](http://docs.facetoe.com.au)
|
||||
|
201
README.rst
201
README.rst
@ -1,201 +0,0 @@
|
||||
|
||||
Управление правами доступа
|
||||
--------------------------
|
||||
|
||||
Идея - написать программу(Web приложение), которая будет выдавать права пользователям системы по запросу самого
|
||||
пользователя. Например, из 12 человек 3 сейчас работают с правами админа, по окончании рабочей смены они сдают
|
||||
свои права (освобождают места) и другие пользователи могут запросить эти права в свое пользование.
|
||||
|
||||
Оставшиеся 9 человек получают права легкого агента - без прав редактирования, а только чтение.
|
||||
|
||||
Из технологий - программа должна взаимодействовать с api системы Zendesk(система обращений клиентов - жалобы),
|
||||
проверять авторизованного пользователя на права(будет возможность менять права напрямую из Zendesk - нужна
|
||||
синхронизация прав с приоритетом у Zendesk).
|
||||
|
||||
Если руками в самом Zendesk права у пользователя отобрали или наоборот
|
||||
присвоили, то наша программа обновляет статус пользователя в соответствии с данными синхронизации
|
||||
(например, раз в минуту).
|
||||
|
||||
Так же в идеале должна быть проверка, что пользователь сайта существует на сайте Zendesk(по токену).
|
||||
|
||||
Сэндбокс Zendesk нам предоставит моя компания, библиотеку для работы с api уже подсказали.
|
||||
Сама программа (наша) будет обладать админскими правами и реализовывать контроль и выдачу прав другим пользователям.
|
||||
|
||||
*Итого:*
|
||||
|
||||
|
||||
#. Реализовать авторизацию пользователей с проверкой по API на существование такого пользователя
|
||||
#. Реализовать интерфейс со статистикой рабочих мест(занято, свободно, кто занимает)
|
||||
#. Реализовать логирование действий(когда взял права, когда отдал - запись в файл и БД)
|
||||
#. Реализовать передачу прав приложением по запросу от пользователя и замену прав пользователя
|
||||
у которого права отбираются внутри Zendesk (на легкий агент)
|
||||
#. Реализовать синхронизацию по API на проверку прав(не менялись ли в системе Zendesk)
|
||||
#. Реализовать возможность добавить большее количество админских прав
|
||||
#. Реализовать возможность добавления легких агентов(права только на просмотр)
|
||||
#. Реализовать на общей странице текущую информацию о пользователе - текущие права, карточка пользователя
|
||||
|
||||
Технологический стек:
|
||||
---------------------
|
||||
|
||||
|
||||
* Python 3
|
||||
* Django 3
|
||||
|
||||
Quickstart
|
||||
----------
|
||||
|
||||
Перед запуском необходимо создать ``.env`` файл.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cp .env.example .env
|
||||
|
||||
Заменить переменные в ``.env`` на актуальные.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt install make
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements/dev.txt
|
||||
./manage.py migrate
|
||||
./manage.py loaddata data.json
|
||||
./manage.py runserver
|
||||
|
||||
Перед запуском для тестирования:
|
||||
--------------------------------
|
||||
|
||||
Убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация ``SYSTEM``
|
||||
Для админов ZenDesk дополнительно - создайте токен доступа в ZenDesk
|
||||
При запуске в Docker убедитесь что папка, которая будет служить хранилищем для БД, открыта на запись и чтение
|
||||
|
||||
Запуск на локальной машине:
|
||||
---------------------------
|
||||
|
||||
|
||||
* Скопировать репозиторий на локальную машину
|
||||
* Перейти в папку приложения
|
||||
* Активировать виртуальное окружение
|
||||
* Выполнить команду ``pip install -r requirements/dev.txt``
|
||||
* В файл ``.env`` добавить следующие переменные:
|
||||
|
||||
.. code-block::
|
||||
|
||||
ACTRL_DEBUG={0/1} - включить режим дебага
|
||||
ACTRL_HOST={HOSTNAME} - при запуске без дебага, надо указать домен на котором будет работать приложение
|
||||
ACTRL_SECRET_KEY={DJANGO_SECRET_KEY} - секретный ключ сгенерированный Django
|
||||
|
||||
ACTRL_EMAIL_HOST={SMTP_HOST} - домен почтового сервера через который приложение будет отправлять письма, например "smtp.gmail.com"
|
||||
ACTRL_EMAIL_PORT={SMTP_PORT} - порт для почтового сервера, например 587, 465 , 2525
|
||||
ACTRL_EMAIL_TLS={USE_TLS} - использовать TLS для подключения к почтовому серверу, 0 или 1
|
||||
ACTRL_EMAIL_HOST_USER={USERNAME} - логин с которым приложение входит на почтовый сервер
|
||||
ACTRL_EMAIL_HOST_PASSWORD={PASSWORD} - пароль/ключ с которым приложение входит на почтовый сервер
|
||||
ACTRL_FROM_EMAIL={EMAIL} - адрес с которого приложение отправляет письма
|
||||
ACTRL_SERVER_EMAIL={EMAIL} - адрес на который отвечают пользователя
|
||||
|
||||
ACTRL_API_EMAIL={EMAIL} - почта админа в ZenDesk
|
||||
ACTRL_API_PASSWORD={PASSWORD} - пароль админа ZenDesk
|
||||
ACTRL_API_TOKEN={API_TOKEN} - API токен зендеск
|
||||
ACTRL_ZENDESK_SUBDOMAIN={DOMAIN} - домен ZenDesk
|
||||
|
||||
ENG_CROLE_ID={ENGINEER_CUSTOM_ROLE_ID} - id роли инженера( custom_role_id сотрдника смены)
|
||||
LA_CROLE_ID={LIGHT_AGENT_CUSTOM_ROLE_ID} - id роли легкого агента (custom_role_id роли -легкий агент)
|
||||
EMPL_GROUP={EMPLOYEE_GROUP_NAME} - имя группы которой принадлежат сотрудники ССКС
|
||||
BUF_GROUP={BUFFER_GROUP_NAME} - имя буферной группы для передачи смен(через нее происходит управление тикетами)
|
||||
ST_EMAIL={SOLVED_TICKETS_EMAIL} - почта на которую будут переназначятся закрытые тикеты
|
||||
LICENSE_NO={LICENSE_NO} - количество лицензий, отображаемых как доступные в приложении
|
||||
SHIFTH={SHIFT_HOURS} - количество часов в рабочей смене (нужно для статистики, пока не реализовано но требует указания значения)
|
||||
|
||||
|
||||
* Выполнить команду ``python manage.py migrate``
|
||||
* Запустить приложение командой ``python manage.py runserver`` (можно указать в параметрах для файла manage.py)
|
||||
* Перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
|
||||
|
||||
Запуск в Docker:
|
||||
----------------
|
||||
|
||||
Требуется установленный и настроенный Docker
|
||||
|
||||
|
||||
* Скопировать репозиторий на локальную машину
|
||||
* В командной строке перейти в папку проекта
|
||||
* Выполнить команду ``docker build --tag access_controller:latest .``
|
||||
* Выполнить команду
|
||||
.. code-block:: bash
|
||||
|
||||
docker run -d -p 8000:8000 \
|
||||
ACTRL_DEBUG={0/1} \
|
||||
ACTRL_HOST={HOSTNAME} \
|
||||
ACTRL_SECRET_KEY={DJANGO_SECRET_KEY} \
|
||||
ACTRL_EMAIL_HOST={SMTP_HOST} \
|
||||
ACTRL_EMAIL_PORT={SMTP_PORT} \
|
||||
ACTRL_EMAIL_TLS={USE_TLS} \
|
||||
ACTRL_EMAIL_HOST_USER={USERNAME} \
|
||||
ACTRL_EMAIL_HOST_PASSWORD={PASSWORD} \
|
||||
ACTRL_FROM_EMAIL={EMAIL} \
|
||||
ACTRL_SERVER_EMAIL={EMAIL} \
|
||||
ACTRL_API_EMAIL={EMAIL} \
|
||||
ACTRL_API_PASSWORD={PASSWORD} \
|
||||
ACTRL_API_TOKEN={API_TOKEN} \
|
||||
ACTRL_ZENDESK_SUBDOMAIN={DOMAIN} \
|
||||
ENG_CROLE_ID={ENGINEER_CUSTOM_ROLE_ID} \
|
||||
LA_CROLE_ID={LIGHT_AGENT_CUSTOM_ROLE_ID} \
|
||||
EMPL_GROUP={EMPLOYEE_GROUP_NAME} \
|
||||
BUF_GROUP={BUFFER_GROUP_NAME} \
|
||||
ST_EMAIL={SOLVED_TICKETS_EMAIL} \
|
||||
LICENSE_NO={LICENSE_NO} \
|
||||
SHIFTH={SHIFT_HOURS} \
|
||||
-v {ABSOLUTE_PATH_TO_DB}:/zendesk-access-controller/db \
|
||||
access_controller:latest
|
||||
|
||||
* открываем запущенный контейнер в браузере (можно перейти по ссылке http://localhost:8000/)
|
||||
|
||||
Запуск с тестовыми юзерами:
|
||||
---------------------------
|
||||
|
||||
На локальной машине - перед запуском команды ``python manage.py runserver`` выполнить команду ``python manage.py loaddata data.json``
|
||||
Это создаст тестового админа и тестового пользователя в приложении для песочницы ZenDesk.
|
||||
|
||||
|
||||
* Админ - ``admin@gmail.com`` / ``zendeskadmin``
|
||||
* Пользователь - ``123@test.ru`` / ``zendeskuser``
|
||||
|
||||
Не сработает если домен песочницы отличается от ``ngenix1612197338`` (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
|
||||
с этими же email, назначить им организацию ``SYSTEM``\ )
|
||||
|
||||
Параметры тестовой песочницы:
|
||||
-----------------------------
|
||||
|
||||
Пример полной конфигурации можно найти в `.env.example <.env.example>`_. Почту и токен админа ZenDesk взять у руководителя (если вы не админ).
|
||||
|
||||
Для проверки pylint используем:
|
||||
-------------------------------
|
||||
|
||||
pylint ../access_controller (каталог, где лежит проект)
|
||||
|
||||
Для приведения файлов к стандарту PEP8 используем:
|
||||
--------------------------------------------------
|
||||
|
||||
autopep8 --in-place filename
|
||||
|
||||
Для проверки орфографии:
|
||||
------------------------
|
||||
|
||||
cd docs
|
||||
|
||||
make spelling
|
||||
|
||||
Для обновления документации:
|
||||
----------------------------
|
||||
|
||||
m2r README.md
|
||||
|
||||
cd docs
|
||||
|
||||
make html
|
||||
|
||||
Read more
|
||||
---------
|
||||
|
||||
|
||||
* Zenpy: `http://docs.facetoe.com.au <http://docs.facetoe.com.au>`_
|
||||
* Zendesk API: `https://developer.zendesk.com/rest_api/docs/ <https://developer.zendesk.com/rest_api/docs/>`_
|
7
documentation.sh
Executable file
7
documentation.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
m2r README.md
|
||||
cd docs
|
||||
make html
|
||||
cd ..
|
||||
rm README.rst
|
Loading…
x
Reference in New Issue
Block a user