Update docs (statistic, zendesk_admin)

This commit is contained in:
Степаненко Ольга 2021-05-20 17:45:25 +03:00
parent 1114c916e9
commit 029b602f96
2 changed files with 24 additions and 13 deletions

View File

@ -172,8 +172,8 @@ class StatisticData:
"""
Функция возвращает логи в диапазоне дат start_date - end_date для пользователя с указанным email.
:return: Данные о смене статусов пользователя. Если пользователь не найден или
интервал времени некорректен - ошибку.
:return: Данные о смене статусов пользователя.
Если пользователь не найден или интервал времени некорректен - ошибку.
"""
if not self.check_time():
self.errors += ['Конец диапазона должен быть позже начала диапазона и раньше текущего времени']
@ -208,9 +208,12 @@ 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:
"""
Функция обрабатывает основную часть работы инженера
Функция обрабатывает подсчета времени работы инженера.
:param log_index: Индекс текущего лога
:return: Дополняет статистику работы инженера временем между текущим и последующим логом
"""
current_log, next_log = self.data[log_index], self.data[log_index + 1]
if current_log.change_time.date() != next_log.change_time.date():
@ -222,9 +225,12 @@ class StatisticData:
elapsed_time = next_log.change_time - current_log.change_time
self.statistic[current_log.change_time.date()] += elapsed_time.total_seconds()
def post_engineer_logic(self, last_log):
def post_engineer_logic(self, last_log: RoleChangeLogs) -> None:
"""
Функция обрабатывает случай, когда нам изветсно что инженер работал и после диапазона
Функция обрабатывает случай, когда пользователя назначили инженером в последнем логе.
:param last_log: Последний лог изменения роли, в результате которого пользователь назначен инженером.
:return: Дополняет статистику работы
"""
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():
@ -237,9 +243,12 @@ class StatisticData:
if self.end_date == timezone.now().date():
self.statistic[self.end_date] = get_timedelta(None, timezone.now().time()).total_seconds()
def prev_engineer_logic(self, first_log):
def prev_engineer_logic(self, first_log: RoleChangeLogs) -> None:
"""
Функция обрабатывает случай, когда нам изветсно что инженер начал работу до диапазона
Функция обрабатывает случай, когда пользователь в первом логе диапазона был назначен легким агентом.
:param first_log_log: Первый лог в диапазоне, в результате которого пользователь назначен легким агентом.
:return: Дополняет статистику работы
"""
self.fill_daterange(max(get_user_model().objects.get(email=self.email).date_joined.date(), self.start_date),
first_log.change_time.date())
@ -258,7 +267,10 @@ class StatisticData:
def clear_statistic(self) -> dict:
"""
Функция осуществляет обновление всех дней.
Функция осуществляет очищает статистику и устанавливает время в диапазоне start_date - end_date в количестве
24*3600 секунд.
:return: Обновленная статистика
"""
self.statistic.clear()
self.fill_daterange(self.start_date, self.end_date + timedelta(days=1), 0)

View File

@ -32,7 +32,7 @@ class ZendeskAdmin:
self.buffer_group_id= self.get_group(ZENDESK_GROUPS['buffer']).id
self.solved_tickets_user_id = self.get_user(SOLVED_TICKETS_EMAIL).id
def update_user(self, user: ZenpyUser) -> bool:
def update_user(self, user: ZenpyUser) -> None:
"""
Функция сохраняет изменение пользователя в Zendesk.
@ -40,7 +40,7 @@ class ZendeskAdmin:
"""
self.admin.users.update(user)
def update_tickets(self, tickets: List[ZenpyTicket]):
def update_tickets(self, tickets: List[ZenpyTicket]) -> None:
"""
Функция сохраняет изменение тикетов в Zendesk.
@ -79,7 +79,7 @@ class ZendeskAdmin:
return group
return None
def get_user_org(self, email: str) -> str:
def get_user_org(self, email: str) -> Optional[str]:
"""
Функция возвращает организацию, к которой относится пользователь по его email.
@ -96,7 +96,6 @@ class ZendeskAdmin:
:raise: :class:`ValueError`: исключение, вызываемое если email не введен в env
:raise: :class:`APIException`: исключение, вызываемое если пользователя с таким email не существует в Zendesk
"""
if self.credentials.get('email') is None:
raise ValueError('access_controller email not in env')