def create_link( integration: Integration, installation: IntegrationInstallation, event: Event, response: Response, ) -> None: """ After creating the event on a third-party service, create a link to the external resource in the DB. TODO make this a transaction. :param integration: Integration object. :param installation: Installation object. :param event: The event object that was recorded on an external service. :param response: The API response from creating the new resource. - key: String. The unique ID of the external resource - metadata: Optional Object. Can contain `display_name`. """ external_issue = ExternalIssue.objects.create( organization_id=event.group.project.organization_id, integration_id=integration.id, key=response["key"], title=event.title, description=installation.get_group_description(event.group, event), metadata=response.get("metadata"), ) GroupLink.objects.create( group_id=event.group.id, project_id=event.group.project_id, linked_type=GroupLink.LinkedType.issue, linked_id=external_issue.id, relationship=GroupLink.Relationship.references, data={"provider": integration.provider}, )
def build_description( event: Event, rule_id: int, installation: IntegrationInstallation, generate_footer: Callable[[str], str], ) -> str: """ Format the description of the ticket/work item """ project = event.group.project rule_url = f"/organizations/{project.organization.slug}/alerts/rules/{project.slug}/{rule_id}/" description: str = installation.get_group_description(event.group, event) + generate_footer( rule_url ) return description