|
19 | 19 | from django.db.models import OuterRef, Q, Value |
20 | 20 | from django.db.models.functions import Coalesce |
21 | 21 | from django.db.models.query import Prefetch, QuerySet |
22 | | -from django.http import HttpRequest, HttpResponse, HttpResponseRedirect, QueryDict, StreamingHttpResponse |
| 22 | +from django.http import HttpRequest, HttpResponse, HttpResponseRedirect, JsonResponse, QueryDict, StreamingHttpResponse |
23 | 23 | from django.shortcuts import get_object_or_404, render |
24 | 24 | from django.urls import Resolver404, reverse |
25 | 25 | from django.utils import timezone |
26 | 26 | from django.utils.translation import gettext as _ |
27 | 27 | from django.views import View |
28 | 28 | from django.views.decorators.cache import cache_page |
| 29 | +from django.views.decorators.http import require_POST |
29 | 30 | from django.views.decorators.vary import vary_on_cookie |
30 | 31 | from openpyxl import Workbook |
31 | 32 | from openpyxl.styles import Font |
@@ -1134,6 +1135,40 @@ def close_eng(request, eid): |
1134 | 1135 | return HttpResponseRedirect(reverse("view_engagements", args=(eng.product.id, ))) |
1135 | 1136 |
|
1136 | 1137 |
|
| 1138 | +@user_is_authorized(Engagement, Permissions.Engagement_Edit, "eid") |
| 1139 | +@require_POST |
| 1140 | +def unlink_jira(request, eid): |
| 1141 | + eng = get_object_or_404(Engagement, id=eid) |
| 1142 | + logger.info("trying to unlink a linked jira epic from engagement %d:%s", eng.id, eng.name) |
| 1143 | + if eng.has_jira_issue: |
| 1144 | + try: |
| 1145 | + jira_helper.unlink_jira(request, eng) |
| 1146 | + messages.add_message( |
| 1147 | + request, |
| 1148 | + messages.SUCCESS, |
| 1149 | + "Link to JIRA epic successfully deleted", |
| 1150 | + extra_tags="alert-success", |
| 1151 | + ) |
| 1152 | + return JsonResponse({"result": "OK"}) |
| 1153 | + except Exception: |
| 1154 | + logger.exception("Link to JIRA epic could not be deleted") |
| 1155 | + messages.add_message( |
| 1156 | + request, |
| 1157 | + messages.ERROR, |
| 1158 | + "Link to JIRA epic could not be deleted, see alerts for details", |
| 1159 | + extra_tags="alert-danger", |
| 1160 | + ) |
| 1161 | + return HttpResponse(status=500) |
| 1162 | + else: |
| 1163 | + messages.add_message( |
| 1164 | + request, |
| 1165 | + messages.ERROR, |
| 1166 | + "Link to JIRA epic not found", |
| 1167 | + extra_tags="alert-danger", |
| 1168 | + ) |
| 1169 | + return HttpResponse(status=400) |
| 1170 | + |
| 1171 | + |
1137 | 1172 | @user_is_authorized(Engagement, Permissions.Engagement_Edit, "eid") |
1138 | 1173 | def reopen_eng(request, eid): |
1139 | 1174 | eng = Engagement.objects.get(id=eid) |
|
0 commit comments