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

View File

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