diff --git a/src/dispatch/plugins/dispatch_core/plugin.py b/src/dispatch/plugins/dispatch_core/plugin.py index 84593ce87b65..2dbeb354a615 100644 --- a/src/dispatch/plugins/dispatch_core/plugin.py +++ b/src/dispatch/plugins/dispatch_core/plugin.py @@ -258,6 +258,7 @@ def update_case_ticket( # reporter_email: str, document_weblink: str, storage_weblink: str, + dispatch_weblink: str, case_type_plugin_metadata: dict = None, ): """Updates a Dispatch case ticket.""" diff --git a/src/dispatch/plugins/dispatch_jira/plugin.py b/src/dispatch/plugins/dispatch_jira/plugin.py index 42cde3f13a0b..8e427d20cec4 100644 --- a/src/dispatch/plugins/dispatch_jira/plugin.py +++ b/src/dispatch/plugins/dispatch_jira/plugin.py @@ -155,6 +155,7 @@ def create_incident_issue_fields( document_weblink: str, storage_weblink: str, conference_weblink: str, + dispatch_weblink: str, cost: float, ): """Creates Jira issue fields.""" @@ -192,6 +193,7 @@ def create_incident_issue_fields( conference_weblink=conference_weblink, conversation_weblink=conversation_weblink, storage_weblink=storage_weblink, + dispatch_weblink=dispatch_weblink, ) issue_fields.update({"description": description}) @@ -210,6 +212,7 @@ def create_case_issue_fields( assignee_username: str, document_weblink: str, storage_weblink: str, + dispatch_weblink: str, ): """Creates Jira issue fields.""" issue_fields = {} @@ -226,6 +229,7 @@ def create_case_issue_fields( document_weblink=document_weblink, resolution=resolution, storage_weblink=storage_weblink, + dispatch_weblink=dispatch_weblink, ) issue_fields.update({"description": description}) @@ -329,6 +333,7 @@ def update( document_weblink: str, storage_weblink: str, conference_weblink: str, + dispatch_weblink: str, cost: float, incident_type_plugin_metadata: dict = None, ): @@ -357,6 +362,7 @@ def update( document_weblink=document_weblink, storage_weblink=storage_weblink, conference_weblink=conference_weblink, + dispatch_weblink=dispatch_weblink, cost=cost, ) @@ -481,6 +487,7 @@ def update_case_ticket( # reporter_email: str, document_weblink: str, storage_weblink: str, + dispatch_weblink: str, case_type_plugin_metadata: dict = None, ): """Updates a case Jira issue.""" @@ -506,6 +513,7 @@ def update_case_ticket( assignee_username=assignee_username, document_weblink=document_weblink, storage_weblink=storage_weblink, + dispatch_weblink=dispatch_weblink, ) return update(self.configuration, client, issue, issue_fields, status) diff --git a/src/dispatch/plugins/dispatch_jira/templates.py b/src/dispatch/plugins/dispatch_jira/templates.py index b652ccee6cdb..1437478766fa 100644 --- a/src/dispatch/plugins/dispatch_jira/templates.py +++ b/src/dispatch/plugins/dispatch_jira/templates.py @@ -9,6 +9,7 @@ Cost: {{cost}} *Incident Resources* +[Dispatch Link|{{dispatch_weblink}}] [Conversation|{{conversation_weblink}}] [Investigation Document|{{document_weblink}}] [Storage|{{storage_weblink}}] @@ -41,6 +42,7 @@ Priority: {{case_priority}} *Case Resources* +[Dispatch Link|{{dispatch_weblink}}] [Investigation Document|{{document_weblink}}] [Storage|{{storage_weblink}}] diff --git a/src/dispatch/ticket/flows.py b/src/dispatch/ticket/flows.py index 9b6c045e8594..a506e478bcb2 100644 --- a/src/dispatch/ticket/flows.py +++ b/src/dispatch/ticket/flows.py @@ -13,6 +13,7 @@ from dispatch.participant import service as participant_service from dispatch.plugin import service as plugin_service from dispatch.task.models import Task +from dispatch.config import DISPATCH_UI_URL from .models import Ticket, TicketCreate from .service import create @@ -111,20 +112,21 @@ def update_incident_ticket( # we update the external incident ticket try: plugin.instance.update( - incident.ticket.resource_id, - title, - description, - incident.incident_type.name, - incident.incident_severity.name, - incident.incident_priority.name, - incident.status.lower(), - incident.commander.individual.email, - incident.reporter.individual.email, - resolve_attr(incident, "conversation.weblink"), - resolve_attr(incident, "incident_document.weblink"), - resolve_attr(incident, "storage.weblink"), - resolve_attr(incident, "conference.weblink"), - total_cost, + ticket_id=incident.ticket.resource_id, + title=title, + description=description, + incident_type=incident.incident_type.name, + incident_severity=incident.incident_severity.name, + incident_priority=incident.incident_priority.name, + status=incident.status.lower(), + commander_email=incident.commander.individual.email, + reporter_email=incident.reporter.individual.email, + conversation_weblink=resolve_attr(incident, "conversation.weblink"), + document_weblink=resolve_attr(incident, "incident_document.weblink"), + storage_weblink=resolve_attr(incident, "storage.weblink"), + conference_weblink=resolve_attr(incident, "conference.weblink"), + dispatch_weblink=f"{DISPATCH_UI_URL}/{incident.project.organization.slug}/incidents/{incident.name}", + cost=total_cost, incident_type_plugin_metadata=incident_type_plugin_metadata, ) except Exception as e: @@ -230,17 +232,18 @@ def update_case_ticket( # we update the external case ticket try: plugin.instance.update_case_ticket( - case.ticket.resource_id, - title, - description, - case.resolution, - case.case_type.name, - case.case_severity.name, - case.case_priority.name, - case.status.lower(), - case.assignee.individual.email, - case_document_weblink, - case_storage_weblink, + ticket_id=case.ticket.resource_id, + title=title, + description=description, + resolution=case.resolution, + case_type=case.case_type.name, + case_severity=case.case_severity.name, + case_priority=case.case_priority.name, + status=case.status.lower(), + assignee_email=case.assignee.individual.email, + document_weblink=case_document_weblink, + storage_weblink=case_storage_weblink, + dispatch_weblink=f"{DISPATCH_UI_URL}/{case.project.organization.slug}/cases/{case.name}", case_type_plugin_metadata=case_type_plugin_metadata, ) except Exception as e: