From fbc65359754cf3e7d2b06a6b64d1375f755345c7 Mon Sep 17 00:00:00 2001 From: Andrew Smirnov Date: Thu, 27 May 2021 20:16:51 +0300 Subject: [PATCH] Fix pylint, add documentation gen script --- .gitignore | 1 + .pylintrc | 2 +- README.md | 18 +++-- README.rst | 201 ----------------------------------------------- documentation.sh | 7 ++ 5 files changed, 19 insertions(+), 210 deletions(-) delete mode 100644 README.rst create mode 100755 documentation.sh diff --git a/.gitignore b/.gitignore index 2d1bab8..9d4839f 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/.pylintrc b/.pylintrc index 0f1221a..d0114f8 100644 --- a/.pylintrc +++ b/.pylintrc @@ -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 diff --git a/README.md b/README.md index f989953..f8d617f 100644 --- a/README.md +++ b/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) diff --git a/README.rst b/README.rst deleted file mode 100644 index 219cdd7..0000000 --- a/README.rst +++ /dev/null @@ -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 `_ -* Zendesk API: `https://developer.zendesk.com/rest_api/docs/ `_ diff --git a/documentation.sh b/documentation.sh new file mode 100755 index 0000000..bfb2cd0 --- /dev/null +++ b/documentation.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +m2r README.md +cd docs +make html +cd .. +rm README.rst