From 487428eaf3f17814ca6f00aaf9a3856050adb101 Mon Sep 17 00:00:00 2001 From: Alex Levine Date: Thu, 11 Aug 2022 21:51:47 +1000 Subject: [PATCH 1/3] Making alterations to create_ticket to allow for tags and specific ticket form id submissions. --- .gitignore | 4 ++++ actions/create_ticket.py | 4 ++-- actions/create_ticket.yaml | 7 +++++++ actions/lib/zendesk.py | 7 ++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 72364f9..c93b594 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,7 @@ ENV/ # Rope project settings .ropeproject + +#vagrant +Vagrantfile +.vagrant \ No newline at end of file diff --git a/actions/create_ticket.py b/actions/create_ticket.py index 47843c8..959ecd1 100644 --- a/actions/create_ticket.py +++ b/actions/create_ticket.py @@ -6,5 +6,5 @@ class CreateTicketAction(ZendeskAction): - def run(self, subject, description): - return self.create_ticket(subject, description) + def run(self, subject, description, tags=None, ticket_form_id=None): + return self.create_ticket(subject, description, tags, ticket_form_id) \ No newline at end of file diff --git a/actions/create_ticket.yaml b/actions/create_ticket.yaml index 0744443..eae1dd5 100644 --- a/actions/create_ticket.yaml +++ b/actions/create_ticket.yaml @@ -13,3 +13,10 @@ parameters: type: string description: "The full description of the ticket" required: true + tags: + type: array + description: "Tags to add to the ticket on creation" + default: [] + ticket_form_id: + type: string + description: "Ticket Form Id, if need to create ticket for specific form." diff --git a/actions/lib/zendesk.py b/actions/lib/zendesk.py index 0293735..48799e2 100644 --- a/actions/lib/zendesk.py +++ b/actions/lib/zendesk.py @@ -35,8 +35,12 @@ def url_for_ticket(self, ticket): def api_search(self, query, search_type): return self.api.search(query, type=search_type, sort_by='created_at', sort_order='desc') - def create_ticket(self, subject, description): + def create_ticket(self, subject, description, tags=None, ticket_form_id=None): ticket = Ticket(subject=subject, description=description) + if tags is not None: + ticket.tags = tags + if ticket_form_id is not None: + ticket.ticket_form_id = ticket_form_id try: created_ticket_audit = self.api.tickets.create(ticket) @@ -44,6 +48,7 @@ def create_ticket(self, subject, description): 'ticket_id': created_ticket_audit.ticket.id, 'ticket_url': self.url_for_ticket(created_ticket_audit.ticket.id), 'subject': self.clean_response(subject), + 'tags': created_ticket_audit.ticket.tags, 'description': self.clean_response(description) } except APIException: From 87705a021eacb3c6288393895f5171436c9e0af1 Mon Sep 17 00:00:00 2001 From: Alex Levine Date: Fri, 12 Aug 2022 08:07:30 +1000 Subject: [PATCH 2/3] map returns a map object. casting to dict. --- actions/lib/zendesk.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/lib/zendesk.py b/actions/lib/zendesk.py index 48799e2..26988a8 100644 --- a/actions/lib/zendesk.py +++ b/actions/lib/zendesk.py @@ -60,14 +60,14 @@ def create_ticket(self, subject, description, tags=None, ticket_form_id=None): def search_tickets(self, query, search_type='ticket', limit=10): try: query_results = self.api_search(query, search_type) - results_clean = map(lambda t: { + results_clean = dict(map(lambda t: { 'ticket_id': t.id, 'ticket_url': self.url_for_ticket(t.id), 'ticket_status': t.status, 'subject': self.clean_response(t.subject), 'description': self.clean_response(t.description)}, list(query_results)[:limit] - ) + )) return {'search_results': results_clean} except APIException: return {'error': 'Could not execute search for query: {}'.format(query)} From 9cc3992108321c23a17f269ea8cf99390cf41439 Mon Sep 17 00:00:00 2001 From: Alex Levine Date: Fri, 12 Aug 2022 08:12:29 +1000 Subject: [PATCH 3/3] should be a list not a dict sorry --- actions/lib/zendesk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/lib/zendesk.py b/actions/lib/zendesk.py index 26988a8..56f1868 100644 --- a/actions/lib/zendesk.py +++ b/actions/lib/zendesk.py @@ -60,7 +60,7 @@ def create_ticket(self, subject, description, tags=None, ticket_form_id=None): def search_tickets(self, query, search_type='ticket', limit=10): try: query_results = self.api_search(query, search_type) - results_clean = dict(map(lambda t: { + results_clean = list(map(lambda t: { 'ticket_id': t.id, 'ticket_url': self.url_for_ticket(t.id), 'ticket_status': t.status,