Merge remote-tracking branch 'origin/feature/pylint' into feature/pylint
# Conflicts: # README.md # access_controller/settings.py # main/extra_func.py # main/models.py # main/views.py
This commit is contained in:
commit
0dc840bba7
@ -181,3 +181,5 @@ ACTRL_ZENDESK_SUBDOMAIN = os.getenv('ACTRL_ZENDESK_SUBDOMAIN') or os.getenv('ZD_
|
||||
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')
|
||||
|
||||
|
||||
|
@ -5,7 +5,7 @@ import logging
|
||||
from datetime import timedelta, datetime, date
|
||||
from typing import Optional, Union
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
|
||||
@ -27,7 +27,6 @@ def update_role(user_profile: UserProfile, role: int, who_changes: get_user_mode
|
||||
|
||||
:param user_profile: Профиль пользователя
|
||||
:param role: Новая роль
|
||||
:param who_changes: Пользователь, меняющий роль
|
||||
:return: Пользователь с обновленной ролью
|
||||
"""
|
||||
zendesk = zenpy
|
||||
@ -44,7 +43,8 @@ def make_engineer(user_profile: UserProfile, who_changes: get_user_model()) -> N
|
||||
Функция устанавливает пользователю роль инженера.
|
||||
|
||||
:param user_profile: Профиль пользователя
|
||||
:return: Вызов функции **update_role** с параметрами: профиль пользователя, роль "engineer"
|
||||
:return: Вызов функции **update_role** с параметрами:
|
||||
профиль пользователя, роль "engineer"
|
||||
"""
|
||||
update_role(user_profile, ROLES['engineer'], who_changes)
|
||||
|
||||
@ -72,7 +72,6 @@ def make_light_agent(user_profile: UserProfile, who_changes: get_user_model()) -
|
||||
|
||||
if tickets.count:
|
||||
zenpy.admin.tickets.update(tickets.values)
|
||||
|
||||
attempts, success = 5, False
|
||||
while not success and attempts != 0:
|
||||
try:
|
||||
@ -86,7 +85,8 @@ def make_light_agent(user_profile: UserProfile, who_changes: get_user_model()) -
|
||||
|
||||
def get_users_list() -> list:
|
||||
"""
|
||||
Функция **get_users_list** возвращает список пользователей Zendesk, относящихся к организации SYSTEM.
|
||||
Функция **get_users_list** возвращает список
|
||||
пользователей Zendesk, относящихся к организации SYSTEM.
|
||||
"""
|
||||
zendesk = zenpy
|
||||
|
||||
@ -186,9 +186,9 @@ def count_users(users: list) -> tuple:
|
||||
return engineers, light_agents
|
||||
|
||||
|
||||
def update_users_in_model():
|
||||
def update_users_in_model() -> list:
|
||||
"""
|
||||
Обновляет пользователей в модели UserProfile по списку пользователей в организации
|
||||
Обновляет пользователей в модели UserProfile по списку пользователей в организации.
|
||||
"""
|
||||
users = get_users_list()
|
||||
for user in users:
|
||||
@ -436,7 +436,7 @@ class StatisticData:
|
||||
if self.data[log_index].new_role == ROLES['engineer']:
|
||||
self.engineer_logic(log_index)
|
||||
|
||||
def engineer_logic(self, log_index):
|
||||
def engineer_logic(self, log_index: int) -> None:
|
||||
"""
|
||||
Функция обрабатывает основную часть работы инженера.
|
||||
|
||||
@ -446,11 +446,14 @@ class StatisticData:
|
||||
if current_log.change_time.date() != next_log.change_time.date():
|
||||
self.statistic[current_log.change_time.date()] += (
|
||||
timedelta(days=1) - get_timedelta(current_log)).total_seconds()
|
||||
self.statistic[next_log.change_time.date()] += get_timedelta(next_log).total_seconds()
|
||||
self.fill_daterange(current_log.change_time.date() + timedelta(days=1), next_log.change_time.date())
|
||||
self.statistic[next_log.change_time.date(
|
||||
)] += get_timedelta(next_log).total_seconds()
|
||||
self.fill_daterange(current_log.change_time.date(
|
||||
) + timedelta(days=1), next_log.change_time.date())
|
||||
else:
|
||||
elapsed_time = next_log.change_time - current_log.change_time
|
||||
self.statistic[current_log.change_time.date()] += elapsed_time.total_seconds()
|
||||
self.statistic[current_log.change_time.date(
|
||||
)] += elapsed_time.total_seconds()
|
||||
|
||||
def post_engineer_logic(self, last_log: RoleChangeLogs) -> None:
|
||||
"""
|
||||
@ -458,16 +461,19 @@ class StatisticData:
|
||||
|
||||
:param last_log: Последний лог
|
||||
"""
|
||||
self.fill_daterange(last_log.change_time.date() + timedelta(days=1), self.end_date + timedelta(days=1))
|
||||
self.fill_daterange(last_log.change_time.date(
|
||||
) + timedelta(days=1), self.end_date + timedelta(days=1))
|
||||
if last_log.change_time.date() == timezone.now().date():
|
||||
self.statistic[last_log.change_time.date()] += (
|
||||
get_timedelta(None, timezone.now().time()) - get_timedelta(last_log)
|
||||
get_timedelta(None, timezone.now().time()) -
|
||||
get_timedelta(last_log)
|
||||
).total_seconds()
|
||||
else:
|
||||
self.statistic[last_log.change_time.date()] += (
|
||||
timedelta(days=1) - get_timedelta(last_log)).total_seconds()
|
||||
if self.end_date == timezone.now().date():
|
||||
self.statistic[self.end_date] = get_timedelta(None, timezone.now().time()).total_seconds()
|
||||
self.statistic[self.end_date] = get_timedelta(
|
||||
None, timezone.now().time()).total_seconds()
|
||||
|
||||
def prev_engineer_logic(self, first_log: RoleChangeLogs) -> None:
|
||||
"""
|
||||
@ -477,9 +483,10 @@ class StatisticData:
|
||||
"""
|
||||
self.fill_daterange(max(get_user_model().objects.get(email=self.email).date_joined.date(), self.start_date),
|
||||
first_log.change_time.date())
|
||||
self.statistic[first_log.change_time.date()] += get_timedelta(first_log).total_seconds()
|
||||
self.statistic[first_log.change_time.date(
|
||||
)] += get_timedelta(first_log).total_seconds()
|
||||
|
||||
def fill_daterange(self, first: date, last: date, val: int = 24 * 3600) -> dict:
|
||||
def fill_daterange(self, first: date, last: date, val: int = 24 * 3600) -> None:
|
||||
"""
|
||||
Функция заполняет диапазон дат значением val (по умолчанию val = кол-во секунд в 1 дне).
|
||||
|
||||
@ -495,7 +502,8 @@ class StatisticData:
|
||||
Функция осуществляет обновление всех дней.
|
||||
"""
|
||||
self.statistic.clear()
|
||||
self.fill_daterange(self.start_date, self.end_date + timedelta(days=1), 0)
|
||||
self.fill_daterange(
|
||||
self.start_date, self.end_date + timedelta(days=1), 0)
|
||||
|
||||
|
||||
class DatabaseHandler(logging.Handler):
|
||||
|
@ -1,10 +1,8 @@
|
||||
"""
|
||||
Модели, использующиеся в приложении.
|
||||
"""
|
||||
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from django.utils import timezone
|
||||
@ -17,7 +15,6 @@ class UserProfile(models.Model):
|
||||
Модель профиля пользователя.
|
||||
|
||||
Профиль создается и изменяется при создании и изменении модель User.
|
||||
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
@ -40,6 +37,7 @@ class UserProfile(models.Model):
|
||||
|
||||
:return: Роль пользователя в Zendesk
|
||||
"""
|
||||
id = self.custom_role_id
|
||||
for role, r_id in ZENDESK_ROLES.items():
|
||||
if r_id == self.custom_role_id:
|
||||
return role
|
||||
@ -107,7 +105,6 @@ class UnassignedTicketStatus(models.IntegerChoices):
|
||||
class UnassignedTicket(models.Model):
|
||||
"""
|
||||
Модель не распределенного тикета.
|
||||
|
||||
"""
|
||||
assignee = models.ForeignKey(to=get_user_model(), on_delete=models.CASCADE, related_name='tickets',
|
||||
help_text='Пользователь, с которого снят тикет')
|
||||
|
@ -28,7 +28,7 @@ from rest_framework.response import Response
|
||||
|
||||
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
||||
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, StatisticData, set_session_params_for_work_page
|
||||
get_users_list, update_users_in_model, count_users, StatisticData, log, set_session_params_for_work_page
|
||||
from main.zendesk_admin import zenpy
|
||||
from main.forms import AdminPageUsers, CustomRegistrationForm, CustomAuthenticationForm, StatisticForm
|
||||
from main.serializers import ProfileSerializer, ZendeskUserSerializer
|
||||
|
Loading…
x
Reference in New Issue
Block a user