Skip to content

Commit b246fd4

Browse files
committed
feature: quick verify finding
1 parent 02998c6 commit b246fd4

4 files changed

Lines changed: 93 additions & 0 deletions

File tree

dojo/finding/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@
142142
name="choose_finding_template_options"),
143143
re_path(r"^finding/(?P<fid>\d+)/(?P<tid>\d+)/apply_template_to_finding$",
144144
views.apply_template_to_finding, name="apply_template_to_finding"),
145+
re_path(r"^finding/(?P<fid>\d+)/verify$", views.verify_finding,
146+
name="verify_finding"),
145147
re_path(r"^finding/(?P<fid>\d+)/close$", views.close_finding,
146148
name="close_finding"),
147149
re_path(r"^finding/(?P<fid>\d+)/defect_review$",

dojo/finding/views.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,6 +1226,72 @@ def close_finding(request, fid):
12261226
)
12271227

12281228

1229+
@user_is_authorized(Finding, Permissions.Finding_Edit, "fid")
1230+
def verify_finding(request, fid):
1231+
finding = get_object_or_404(Finding, id=fid)
1232+
1233+
if finding.verified:
1234+
messages.add_message(
1235+
request,
1236+
messages.INFO,
1237+
"Finding already verified.",
1238+
extra_tags="alert-info",
1239+
)
1240+
return redirect_to_return_url_or_else(
1241+
request,
1242+
reverse("view_finding", args=(finding.id,)),
1243+
)
1244+
1245+
form = NoteForm(data=request.POST or None)
1246+
form.fields["entry"].required = False
1247+
form.fields["entry"].label = _("Comment (optional)")
1248+
1249+
if request.method == "POST" and form.is_valid():
1250+
entry = form.cleaned_data.get("entry", "").strip()
1251+
if entry:
1252+
note = form.save(commit=False)
1253+
note.author = request.user
1254+
note.save()
1255+
finding.notes.add(note)
1256+
1257+
now_time = timezone.now()
1258+
finding.verified = True
1259+
finding.last_reviewed = now_time
1260+
finding.last_reviewed_by = request.user
1261+
finding.last_status_update = now_time
1262+
finding.save(push_to_jira=False)
1263+
1264+
messages.add_message(
1265+
request,
1266+
messages.SUCCESS,
1267+
"Finding verified.",
1268+
extra_tags="alert-success",
1269+
)
1270+
1271+
return redirect_to_return_url_or_else(
1272+
request,
1273+
reverse("view_finding", args=(finding.id,)),
1274+
)
1275+
1276+
product_tab = Product_Tab(
1277+
finding.test.engagement.product,
1278+
title="Verify Finding",
1279+
tab="findings",
1280+
)
1281+
1282+
return render(
1283+
request,
1284+
"dojo/verify_finding.html",
1285+
{
1286+
"finding": finding,
1287+
"product_tab": product_tab,
1288+
"user": request.user,
1289+
"form": form,
1290+
"active_tab": "findings",
1291+
},
1292+
)
1293+
1294+
12291295
@user_is_authorized(Finding, Permissions.Finding_Edit, "fid")
12301296
def defect_finding_review(request, fid):
12311297
finding = get_object_or_404(Finding, id=fid)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{% extends "base.html" %}
2+
{% load i18n %}
3+
4+
{% block content %}
5+
{{ block.super }}
6+
<h3>{% trans "Verify Finding" %}</h3>
7+
<h4>{{ finding.title }}</h4>
8+
<p>{% trans "Use this form to mark the finding as verified. Adding a comment is optional." %}</p>
9+
<form class="form-horizontal" action="{% url 'verify_finding' finding.id %}" method="post">
10+
{% csrf_token %}
11+
{% include "dojo/form_fields.html" with form=form %}
12+
<div class="form-group">
13+
<div class="col-sm-offset-2 col-sm-10">
14+
<input class="btn btn-primary" type="submit" value="{% trans "Verify Finding" %}" aria-label="{% trans "Verify Finding" %}"/>
15+
</div>
16+
</div>
17+
</form>
18+
{% endblock %}

dojo/templates/dojo/view_finding.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,13 @@ <h3 class="pull-left finding-title">
126126
</a>
127127
</li>
128128
{% else %}
129+
{% if not finding.verified %}
130+
<li role="presentation">
131+
<a href="{% url 'verify_finding' finding.id %}">
132+
<i class="fa-solid fa-circle-check"></i> Verify Finding
133+
</a>
134+
</li>
135+
{% endif %}
129136
<li role="presentation">
130137
<a href="{% url 'close_finding' finding.id %}">
131138
<i class="fa-solid fa-fire-extinguisher"></i> Close Finding

0 commit comments

Comments
 (0)