Move email, secrets, run params to env. Update README.md
This commit is contained in:
parent
c9400e8f9e
commit
508324c62c
25
.env.example
Normal file
25
.env.example
Normal file
@ -0,0 +1,25 @@
|
||||
ACTRL_DEBUG=1
|
||||
|
||||
ACTRL_SECRET_KEY="v1i_fb\$_jf2#1v_lcsbu&eon4u-os0^px=s^iycegdycqy&5)6"
|
||||
ACTRL_HOST="actrl.example.com"
|
||||
|
||||
ACTRL_EMAIL_HOST="smtp.mail.ru"
|
||||
ACTRL_EMAIL_PORT=2525
|
||||
ACTRL_EMAIL_TLS=1
|
||||
ACTRL_EMAIL_HOST_USER="djgr.02@mail.ru"
|
||||
ACTRL_EMAIL_HOST_PASSWORD="djangogroup02"
|
||||
ACTRL_FROM_EMAIL="djgr.02@mail.ru"
|
||||
ACTRL_SERVER_EMAIL="djgr.02@mail.ru"
|
||||
|
||||
ENG_CROLE_ID=360005209000
|
||||
LA_CROLE_ID=360005208980
|
||||
EMPL_GROUP="Поддержка"
|
||||
BUF_GROUP="Сменная группа"
|
||||
ST_EMAIL="d.krikov@ngenix.net"
|
||||
LICENSE_NO=3
|
||||
SHIFTH=12
|
||||
|
||||
ACTRL_ZENDESK_SUBDOMAIN="ngenix1612197338"
|
||||
ACTRL_API_EMAIL="email@example.com"
|
||||
ACTRL_API_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
ACTRL_API_PASSWORD=""
|
111
README.md
111
README.md
@ -42,7 +42,7 @@
|
||||
```bash
|
||||
sudo apt install make
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements/dev.txt
|
||||
./manage.py migrate
|
||||
./manage.py loaddata data.json
|
||||
./manage.py runserver
|
||||
@ -52,24 +52,37 @@ pip install -r requirements.txt
|
||||
|
||||
## Перед запуском для тестирования:
|
||||
|
||||
Убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация (SYSTEM)
|
||||
Убедитесь, что вы зарегистрированы в песочнице ZenDesk, у вас назначена организация `SYSTEM`
|
||||
Для админов ZenDesk дополнительно - создайте токен доступа в ZenDesk
|
||||
При запуске в Docker убедитесь что папка, которая будет служить хранилищем для БД, открыта на запись и чтение
|
||||
|
||||
|
||||
## Запуск на локальной машине:
|
||||
|
||||
скопировать репозиторий на локальную машину
|
||||
перейти в папку приложения
|
||||
активировать вирутальное окружение
|
||||
выполнить команду pip install -r requirements.txt
|
||||
в вирутальное окружение добавить следующие переменные :
|
||||
- Скопировать репозиторий на локальную машину
|
||||
- Перейти в папку приложения
|
||||
- Активировать виртуальное окружение
|
||||
- Выполнить команду `pip install -r requirements/dev.txt`
|
||||
- В виртуальное окружение добавить следующие переменные:
|
||||
|
||||
|
||||
ACCESS_CONTROLLER_API_EMAIL={EMAIL} - почта админа в ZenDesk
|
||||
ACCESS_CONTROLLER_API_PASSWORD={PASSWORD} - пароль админа ZenDesk
|
||||
ACCESS_CONTROLLER_API_TOKEN={API_TOKEN} - API токен зендеск
|
||||
ZD_DOMAIN={DOMAIN} - домен ZenDesk
|
||||
```
|
||||
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} - имя группы которой принадлежат сотрудники ССКС
|
||||
@ -77,48 +90,62 @@ BUF_GROUP={BUFFER_GROUP_NAME} - имя буферной группы для пе
|
||||
ST_EMAIL={SOLVED_TICKETS_EMAIL} - почта на которую будут переназначятся закрытые тикеты
|
||||
LICENSE_NO={LICENSE_NO} - количество лицензий, отображаемых как доступные в приложении
|
||||
SHIFTH={SHIFT_HOURS} - количество часов в рабочей смене (нужно для статистики, пока не реализовано но требует указания значения)
|
||||
```
|
||||
|
||||
|
||||
выполнить команду python manage.py makemigrations
|
||||
выполнить команду python manage.py migrate
|
||||
запустить приложение командой python manage.py runserver (можно указать в параметрах для файла manage.py)
|
||||
перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
|
||||
- Выполнить команду `python manage.py migrate`
|
||||
- Запустить приложение командой `python manage.py runserver` (можно указать в параметрах для файла manage.py)
|
||||
- Перейти по ссылке в консоли (вероятнее всего откроется по адресу http://127.0.0.1:8000/)
|
||||
|
||||
|
||||
## Запуск в Docker:
|
||||
Требуется установленный и настроеный Docker
|
||||
Требуется установленный и настроенный Docker
|
||||
|
||||
скопировать репозиторий на локальную машину
|
||||
в командной строке перейти в папку проекта
|
||||
выполнить команду docker build .
|
||||
выполнить команду docker images (нам нужен id созданного образа)
|
||||
выполнить команду docker run -d -p 8000:8000 -e ACCESS_CONTROLLER_API_EMAIL={EMAIL} -e ACCESS_CONTROLLER_API_PASSWORD={PASSWORD}
|
||||
...(перечисляем все параметры виртуального окружени разделяя их -e) -v {абсолютный путь к папке, в которой будет размещена база}:/zendesk-access-controller/db {id образа докера}
|
||||
открываем запущеный контейнер в браузере (можно перейти по ссылке http://localhost:8000/)
|
||||
- Скопировать репозиторий на локальную машину
|
||||
- В командной строке перейти в папку проекта
|
||||
- Выполнить команду `docker build --tag access_controller:latest .`
|
||||
- Выполнить команду
|
||||
```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.
|
||||
|
||||
На локальной машине - перед запуском команды python manage.py runserver выполнить команду python manage.py loaddata data.json
|
||||
Это создаст тестового админа и тестового пользователя в приложении для песочницы ZenDesk. Админ - admin@gmail.com / zendeskadmin , пользователь - 123@test.ru / zendeskuser .
|
||||
Не сработает если домен песочницы отличается от ngenix1612197338 (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
|
||||
с этими же почтами, назначить им организацию (SYSTEM))
|
||||
- Админ - `admin@gmail.com` / `zendeskadmin`
|
||||
- Пользователь - `123@test.ru` / `zendeskuser`
|
||||
|
||||
Не сработает если домен песочницы отличается от `ngenix1612197338` (на другом домене нужно будет создать сначала пользователей в песочнице с правами админа и легкого агента
|
||||
с этими же почтами, назначить им организацию `SYSTEM`)
|
||||
|
||||
|
||||
## Параметры тестовой песочницы:
|
||||
|
||||
ACCESS_CONTROLLER_API_EMAIL={EMAIL} - почта админа в ZenDesk - взять у роководителя(если вы не админ)
|
||||
ACCESS_CONTROLLER_API_PASSWORD={PASSWORD} - пароль админа ZenDesk - взять у роководителя(если вы не админ)
|
||||
ACCESS_CONTROLLER_API_TOKEN={API_TOKEN} - API токен зендеск - взять у роководителя(если вы не админ)
|
||||
ZD_DOMAIN=ngenix1612197338
|
||||
ENG_CROLE_ID=360005209000
|
||||
LA_CROLE_ID=360005208980
|
||||
EMPL_GROUP=Поддержка
|
||||
BUF_GROUP=Сменная группа
|
||||
ST_EMAIL=d.krikov@ngenix.net
|
||||
|
||||
LICENSE_NO=3
|
||||
SHIFTH=12
|
||||
Пример полной конфигурации можно найти в [.env.example](.env.example). Почту и токен админа ZenDesk взять у руководителя (если вы не админ).
|
||||
|
||||
|
||||
## Read more
|
||||
|
@ -19,12 +19,16 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'v1i_fb$_jf2#1v_lcsbu&eon4u-os0^px=s^iycegdycqy&5)6'
|
||||
SECRET_KEY = os.getenv('ACTRL_SECRET_KEY')
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
DEBUG = bool(int(os.getenv('ACTRL_DEBUG')))
|
||||
|
||||
ALLOWED_HOSTS = ['127.0.0.1']
|
||||
ALLOWED_HOSTS = [
|
||||
'127.0.0.1',
|
||||
'localhost',
|
||||
os.getenv('ACTRL_HOST'),
|
||||
]
|
||||
|
||||
# Application definition
|
||||
|
||||
@ -53,13 +57,13 @@ MIDDLEWARE = [
|
||||
ROOT_URLCONF = 'access_controller.urls'
|
||||
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'smtp.mail.ru'
|
||||
EMAIL_PORT = 2525
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST_USER = 'djgr.02@mail.ru'
|
||||
EMAIL_HOST_PASSWORD = 'djangogroup02'
|
||||
SERVER_EMAIL = EMAIL_HOST_USER
|
||||
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
|
||||
EMAIL_HOST = os.getenv('ACTRL_EMAIL_HOST')
|
||||
EMAIL_PORT = int(os.getenv('ACTRL_EMAIL_PORT'))
|
||||
EMAIL_USE_TLS = bool(int(os.getenv('ACTRL_EMAIL_TLS')))
|
||||
EMAIL_HOST_USER = os.getenv('ACTRL_EMAIL_HOST_USER')
|
||||
EMAIL_HOST_PASSWORD = os.getenv('ACTRL_EMAIL_HOST_PASSWORD')
|
||||
DEFAULT_FROM_EMAIL = os.getenv('ACTRL_FROM_EMAIL')
|
||||
SERVER_EMAIL = os.getenv('ACTRL_SERVER_EMAIL')
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
@ -180,7 +184,6 @@ LOGGING = {
|
||||
}
|
||||
|
||||
|
||||
|
||||
ZENDESK_ROLES = {
|
||||
'engineer': int(os.getenv('ENG_CROLE_ID',0)),
|
||||
'light_agent': int(os.getenv('LA_CROLE_ID',0)),
|
||||
@ -204,3 +207,8 @@ REST_FRAMEWORK = {
|
||||
}
|
||||
|
||||
ONE_DAY = int(os.getenv('SHIFTH',0)) # Количество часов в 1 рабочем дне
|
||||
|
||||
ACTRL_ZENDESK_SUBDOMAIN = os.getenv('ACTRL_ZENDESK_SUBDOMAIN') or os.getenv('ZD_DOMAIN')
|
||||
ACTRL_API_EMAIL = os.getenv('ACTRL_API_EMAIL') or os.getenv('ACCESS_CONTROLLER_API_EMAIL')
|
||||
ACTRL_API_TOKEN = os.getenv('ACTRL_API_TOKEN') or os.getenv('ACCESS_CONTROLLER_API_TOKEN')
|
||||
ACTRL_API_PASSWORD = os.getenv('ACTRL_API_PASSWORD') or os.getenv('ACCESS_CONTROLLER_API_PASSWORD')
|
||||
|
@ -3,6 +3,8 @@ import os
|
||||
from zenpy import Zenpy
|
||||
from zenpy.lib.api_objects import User as ZenpyUser
|
||||
|
||||
from access_controller.settings import ACTRL_ZENDESK_SUBDOMAIN, ACTRL_API_EMAIL, ACTRL_API_TOKEN, ACTRL_API_PASSWORD
|
||||
|
||||
|
||||
def api_auth() -> dict:
|
||||
"""
|
||||
@ -15,15 +17,15 @@ def api_auth() -> dict:
|
||||
:return: данные пользователя
|
||||
"""
|
||||
credentials = {
|
||||
'subdomain': os.getenv('ZD_DOMAIN')
|
||||
'subdomain': ACTRL_ZENDESK_SUBDOMAIN
|
||||
}
|
||||
email = os.getenv('ACCESS_CONTROLLER_API_EMAIL')
|
||||
token = os.getenv('ACCESS_CONTROLLER_API_TOKEN')
|
||||
password = os.getenv('ACCESS_CONTROLLER_API_PASSWORD')
|
||||
email = ACTRL_API_EMAIL
|
||||
token = ACTRL_API_TOKEN
|
||||
password = ACTRL_API_PASSWORD
|
||||
|
||||
if email is None:
|
||||
raise ValueError('access_controller email not in env')
|
||||
credentials['email'] = os.getenv('ACCESS_CONTROLLER_API_EMAIL')
|
||||
credentials['email'] = email
|
||||
|
||||
# prefer token, use password if token not provided
|
||||
if token:
|
||||
|
@ -1,4 +1,3 @@
|
||||
import os
|
||||
from datetime import timedelta, datetime, date
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
@ -7,7 +6,8 @@ from django.utils import timezone
|
||||
from zenpy import Zenpy
|
||||
from zenpy.lib.exception import APIException
|
||||
|
||||
from access_controller.settings import ZENDESK_ROLES as ROLES, ONE_DAY, ZENDESK_GROUPS, SOLVED_TICKETS_EMAIL
|
||||
from access_controller.settings import ZENDESK_ROLES as ROLES, ONE_DAY, ZENDESK_GROUPS, SOLVED_TICKETS_EMAIL, \
|
||||
ACTRL_API_EMAIL, ACTRL_API_TOKEN, ACTRL_API_PASSWORD, ACTRL_ZENDESK_SUBDOMAIN
|
||||
from main.models import UserProfile, RoleChangeLogs, UnassignedTicket, UnassignedTicketStatus
|
||||
|
||||
|
||||
@ -26,11 +26,11 @@ class ZendeskAdmin:
|
||||
"""
|
||||
|
||||
credentials: dict = {
|
||||
'subdomain': 'ngenix1612197338'
|
||||
'subdomain': ACTRL_ZENDESK_SUBDOMAIN
|
||||
}
|
||||
email: str = os.getenv('ACCESS_CONTROLLER_API_EMAIL')
|
||||
token: str = os.getenv('ACCESS_CONTROLLER_API_TOKEN')
|
||||
password: str = os.getenv('ACCESS_CONTROLLER_API_PASSWORD')
|
||||
email: str = ACTRL_API_EMAIL
|
||||
token: str = ACTRL_API_TOKEN
|
||||
password: str = ACTRL_API_PASSWORD
|
||||
|
||||
def __init__(self):
|
||||
self.create_admin()
|
||||
@ -264,7 +264,7 @@ def check_user_auth(email: str, password: str) -> bool:
|
||||
creds = {
|
||||
'email': email,
|
||||
'password': password,
|
||||
'subdomain': 'ngenix1612197338',
|
||||
'subdomain': ACTRL_ZENDESK_SUBDOMAIN,
|
||||
}
|
||||
try:
|
||||
user = Zenpy(**creds)
|
||||
|
@ -25,7 +25,7 @@ from rest_framework.response import Response
|
||||
|
||||
from zenpy.lib.api_objects import User as ZenpyUser
|
||||
|
||||
from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
||||
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
||||
from main.extra_func import ZendeskAdmin
|
||||
from main.extra_func import check_user_exist, update_profile, get_user_organization, \
|
||||
make_engineer, make_light_agent, get_users_list, update_users_in_model, count_users, \
|
||||
@ -71,7 +71,7 @@ class CustomRegistrationView(RegistrationView):
|
||||
opts = {
|
||||
'use_https': self.request.is_secure(),
|
||||
'token_generator': default_token_generator,
|
||||
'from_email': EMAIL_HOST_USER,
|
||||
'from_email': DEFAULT_FROM_EMAIL,
|
||||
'email_template_name': 'registration/password_reset_email.html',
|
||||
'subject_template_name': 'registration/password_reset_subject.txt',
|
||||
'request': self.request,
|
||||
|
Loading…
x
Reference in New Issue
Block a user