39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
import requests
|
|
from zenpy import TicketApi
|
|
from zenpy.lib.api_objects import Ticket
|
|
|
|
from main.zendesk_admin import zenpy
|
|
|
|
|
|
class TicketListRequester:
|
|
def __init__(self):
|
|
self.email = zenpy.credentials['email']
|
|
if zenpy.credentials.get('token'):
|
|
self.token_or_password = zenpy.credentials.get('token')
|
|
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 = 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:
|
|
return None
|
|
for ticket in response.json()['tickets']:
|
|
tickets.append(Ticket(api=TicketApi, **ticket))
|
|
return tickets
|