Add get group tickets requests
This commit is contained in:
parent
db9676358a
commit
cf2e9ccf21
@ -62,10 +62,9 @@ def make_light_agent(user_profile: UserProfile, who_changes: User) -> None:
|
||||
else:
|
||||
ticket.assignee = None
|
||||
ticket.group_id = zenpy.buffer_group_id
|
||||
|
||||
zenpy.admin.tickets.update(tickets.values)
|
||||
|
||||
attempts, success = 5, False
|
||||
if tickets:
|
||||
zenpy.admin.tickets.update(tickets)
|
||||
attempts, success = 20, False
|
||||
while not success and attempts != 0:
|
||||
try:
|
||||
update_role(user_profile, ROLES['light_agent'])
|
||||
@ -95,6 +94,13 @@ def get_tickets_list(email):
|
||||
return TicketListRequester().get_tickets_list_for_user(zenpy.get_user(email))
|
||||
|
||||
|
||||
def get_tickets_list_for_group(group_name):
|
||||
"""
|
||||
Функция возвращает список неназначенных, нерешённых тикетов группы Zendesk
|
||||
"""
|
||||
return TicketListRequester().get_tickets_list_for_group(zenpy.get_group(group_name))
|
||||
|
||||
|
||||
def update_profile(user_profile: UserProfile):
|
||||
"""
|
||||
Функция обновляет профиль пользователя в соответствии с текущим в Zendesk.
|
||||
|
@ -13,15 +13,25 @@ class TicketListRequester:
|
||||
self.email += '/token'
|
||||
else:
|
||||
self.token_or_password = zenpy.credentials.get('password')
|
||||
self.prefix = f'https://{zenpy.credentials.get("subdomain")}.zendesk.com/api/v2/'
|
||||
|
||||
def get_tickets_list_for_user(self, zendesk_user):
|
||||
url = f'https://ngenix1612197338.zendesk.com/api/v2/users/{zendesk_user.id}/tickets/assigned'
|
||||
url = self.prefix + f'users/{zendesk_user.id}/tickets/assigned'
|
||||
return self._get_tickets(url)
|
||||
|
||||
def get_tickets_list_for_group(self, group):
|
||||
url = self.prefix + '/tickets'
|
||||
all_tickets = self._get_tickets(url)
|
||||
tickets = list()
|
||||
for ticket in all_tickets:
|
||||
if (ticket.status != 'solved') and (ticket.group_id == group.id) and (ticket.assignee_id is None):
|
||||
tickets.append(ticket)
|
||||
return tickets
|
||||
|
||||
def _get_tickets(self, url):
|
||||
response = requests.get(url, auth=(self.email, self.token_or_password))
|
||||
tickets = []
|
||||
if response.status_code!=200:
|
||||
if response.status_code != 200:
|
||||
return None
|
||||
for ticket in response.json()['tickets']:
|
||||
tickets.append(Ticket(api=TicketApi, **ticket))
|
||||
|
@ -20,13 +20,13 @@ from django_registration.views import RegistrationView
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
|
||||
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
||||
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS, ZENDESK_GROUPS
|
||||
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, \
|
||||
log, set_session_params_for_work_page
|
||||
log, set_session_params_for_work_page, get_tickets_list_for_group
|
||||
from .statistic_data import StatisticData
|
||||
from main.zendesk_admin import zenpy
|
||||
from .requester import TicketListRequester
|
||||
from main.requester import TicketListRequester
|
||||
from main.forms import AdminPageUsers, CustomRegistrationForm, CustomAuthenticationForm, StatisticForm
|
||||
from main.serializers import ProfileSerializer, ZendeskUserSerializer
|
||||
from .models import UserProfile
|
||||
@ -229,15 +229,19 @@ def work_become_engineer(request: WSGIRequest) -> HttpResponseRedirect:
|
||||
def work_get_tickets(request):
|
||||
zenpy_user = zenpy.get_user(request.user.email)
|
||||
if zenpy_user.role == 'admin' or zenpy_user.custom_role_id == ZENDESK_ROLES['engineer']:
|
||||
tickets = [ticket for ticket in zenpy.admin.search(type="ticket") if
|
||||
ticket.group.name == 'Сменная группа' and ticket.assignee is None]
|
||||
tickets = get_tickets_list_for_group(ZENDESK_GROUPS['buffer'])
|
||||
assigned_tickets = []
|
||||
count = 0
|
||||
for i in range(len(tickets)):
|
||||
if i == int(request.GET.get('count_tickets')):
|
||||
if assigned_tickets:
|
||||
zenpy.admin.tickets.update(assigned_tickets)
|
||||
return set_session_params_for_work_page(request, count)
|
||||
tickets[i].assignee = zenpy_user
|
||||
assigned_tickets.append(tickets[i])
|
||||
count += 1
|
||||
zenpy.admin.tickets.update(tickets)
|
||||
if assigned_tickets:
|
||||
zenpy.admin.tickets.update(assigned_tickets)
|
||||
return set_session_params_for_work_page(request, count)
|
||||
return set_session_params_for_work_page(request, is_confirm=False)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user