Added ticket building function to account for pagination
This commit is contained in:
parent
8db8ab0a48
commit
747300af32
@ -11,7 +11,8 @@ import time
|
||||
import sys
|
||||
import base64
|
||||
import urllib.parse
|
||||
import mimetypes
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
###################################
|
||||
# Function Definitions
|
||||
@ -31,7 +32,7 @@ def makeCall (target, verb, key, payload= None, files= None):
|
||||
return responseData
|
||||
except requests.exceptions.HTTPError as http_error:
|
||||
print(f'{RED}HTTP Error:{RESET}\n{http_error}')
|
||||
pint(f'Reponse Content: {response.content}')
|
||||
print(f'Reponse Content: {response.content}')
|
||||
raise
|
||||
except Exception as error:
|
||||
print(f'{RED}Error:{RESET}\n{error}')
|
||||
@ -77,6 +78,39 @@ def checkRate(response):
|
||||
else:
|
||||
return False
|
||||
|
||||
def buildTicketArray(domain, groupId, key):
|
||||
retArray = []
|
||||
page = 1
|
||||
moreTickets = True
|
||||
dateFormat = "%Y-%m-%d"
|
||||
currentDate = datetime.utcnow()
|
||||
ticketBatch = 30
|
||||
maxPages = 10
|
||||
|
||||
while moreTickets:
|
||||
page = 1
|
||||
morePages = True
|
||||
endDate = currentDate.strftime(dateFormat)
|
||||
startDate = (currentDate - relativedelta(months=1)).strftime(dateFormat)
|
||||
query = f'"(group_id:{groupId}) AND (created_at:>\'{startDate}\' AND created_at:<\'{endDate}\')"'
|
||||
encodeQuery = urllib.parse.quote(query, safe=":<>() AND")
|
||||
|
||||
while morePages and page <= maxPages:
|
||||
url = f'{domain}/api/v2/search/tickets?query={encodeQuery}&page={page}'
|
||||
response = makeCall(url, 'get', key)
|
||||
|
||||
if 'results' in response and len(response['results']) > 0:
|
||||
retArray.extend(response['results'])
|
||||
else:
|
||||
morePages = False
|
||||
page += 1
|
||||
|
||||
if len(response['results']) < ticketBatch:
|
||||
moreTickets = False
|
||||
|
||||
currentDate -= relativedelta(months=1)
|
||||
return retArray
|
||||
|
||||
###################################
|
||||
# Globals Variables
|
||||
###################################
|
||||
@ -173,14 +207,15 @@ print(f'Obtaining account information...{GREEN}COMPLETE{RESET}')
|
||||
## Building Ticket Array from Source
|
||||
print(f'Gathering list of tickets from source...')
|
||||
#ticketArray = makeCall(sourceDom + '/api/v2/search/tickets?query=' + urllib.parse.urlencode(f'"group_id:\'{targetGroupId}\'"'), 'get', sourceKey)
|
||||
ticketArray = makeCall(f'{sourceDom}/api/v2/search/tickets?query="group_id:{targetGroupId}"', 'get', sourceKey)
|
||||
#ticketArray = makeCall(f'{sourceDom}/api/v2/search/tickets?query="group_id:{targetGroupId}"', 'get', sourceKey)
|
||||
ticketArray = buildTicketArray(sourceDom, targetGroupId, sourceKey)
|
||||
clear(1)
|
||||
print(f'Gathering list of tickets from source...{GREEN}COMPLETE{RESET}')
|
||||
|
||||
## Transferring tickets to Destination
|
||||
print(f'{YELLOW}*This may take a while*{RESET}')
|
||||
print(f'Transferring tickets to destination account...◐')
|
||||
for i, ticket in enumerate(ticketArray['results']):
|
||||
for i, ticket in enumerate(ticketArray):
|
||||
attachments = {}
|
||||
anim = ['◓', '◑', '◒', '◐']
|
||||
ticketData = makeCall(sourceDom + f'/api/v2/tickets/{ticket["id"]}?include=conversations,requester', 'get', sourceKey)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user