Skip to content

Commit c92b446

Browse files
committed
open a request for each TriageRecord when request_template is set
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent 2df2f7e commit c92b446

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

vulnerabilities/triage/engine.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def apply_preset_for_vulnerabilities(preset, product, vulnerability_ids):
108108
analysis.detail,
109109
]
110110
if not any(content_fields):
111-
continue # Preset has no content fields -- cannot save a new analysis
111+
continue # Preset has no content fields - cannot save a new analysis
112112
else:
113113
analysis = existing
114114
preset.apply_to_analysis(analysis)
@@ -185,6 +185,40 @@ def sync_triage_records(ruleset, product, matched_rules_per_vulnerability_id, ap
185185
vulnerability_ids=list(matched_rules_per_vulnerability_id.keys()),
186186
)
187187

188+
# Open a workflow Request for each TriageRecord when the Ruleset request_template is set.
189+
if ruleset.request_template_id:
190+
records_without_request = TriageRecord.objects.filter(
191+
ruleset=ruleset,
192+
product=product,
193+
request=None,
194+
).select_related("vulnerability")
195+
196+
if records_without_request:
197+
create_triage_requests(
198+
request_template=ruleset.request_template,
199+
product=product,
200+
records=records_without_request,
201+
)
202+
203+
204+
def create_triage_requests(request_template, product, records):
205+
"""
206+
Open one Request per TriageRecord using the given request_template.
207+
208+
Uses the request_template creator as requester.
209+
"""
210+
requester = request_template.created_by
211+
212+
for record in records:
213+
advisory_id = record.vulnerability.advisory_id
214+
triage_request = request_template.create_request(
215+
requester=requester,
216+
title=f"Vulnerability: {advisory_id}",
217+
product_context=product,
218+
object_id=product.pk,
219+
)
220+
TriageRecord.objects.filter(pk=record.pk).update(request=triage_request)
221+
188222

189223
def evaluate_ruleset(ruleset, product, apply_preset=True):
190224
"""Evaluate a TriageRuleset against a product and persist the results."""

0 commit comments

Comments
 (0)