|
150 | 150 | from vulnerabilities.models import Vulnerability |
151 | 151 | from vulnerabilities.models import VulnerabilityAnalysis |
152 | 152 | from vulnerabilities.models import get_risk_level |
| 153 | +from vulnerabilities.triage.engine import reevaluate_product_rulesets |
153 | 154 | from vulnerabilities.triage.models import AnalysisPreset |
154 | 155 | from vulnerabilities.triage.models import ProductTriageRuleset |
155 | 156 | from vulnerabilities.triage.models import TriageAction |
@@ -2249,20 +2250,19 @@ def manage_triage_rulesets_view(request, dataspace, name, version=""): |
2249 | 2250 | product=product, ruleset__enabled=True |
2250 | 2251 | ).select_related("ruleset") |
2251 | 2252 | } |
2252 | | - for ruleset in available_rulesets: |
2253 | | - ruleset_uuid = str(ruleset.uuid) |
2254 | | - if ruleset_uuid in submitted_uuids and ruleset_uuid not in current_assignments: |
2255 | | - # The evaluate_on_assign signal evaluates the ruleset against the product; |
2256 | | - # wrapping in atomic() rolls the assignment back if that evaluation fails. |
2257 | | - with transaction.atomic(): |
| 2253 | + with transaction.atomic(): |
| 2254 | + for ruleset in available_rulesets: |
| 2255 | + ruleset_uuid = str(ruleset.uuid) |
| 2256 | + if ruleset_uuid in submitted_uuids and ruleset_uuid not in current_assignments: |
2258 | 2257 | ProductTriageRuleset.objects.create( |
2259 | 2258 | product=product, |
2260 | 2259 | ruleset=ruleset, |
2261 | 2260 | dataspace=product.dataspace, |
2262 | 2261 | ) |
2263 | | - for ruleset_uuid, assignment in current_assignments.items(): |
2264 | | - if ruleset_uuid not in submitted_uuids: |
2265 | | - assignment.delete() |
| 2262 | + for ruleset_uuid, assignment in current_assignments.items(): |
| 2263 | + if ruleset_uuid not in submitted_uuids: |
| 2264 | + assignment.delete() |
| 2265 | + reevaluate_product_rulesets(product) |
2266 | 2266 | return JsonResponse({"success": True}) |
2267 | 2267 |
|
2268 | 2268 | assigned_ruleset_ids = set(product.product_triage_rulesets.values_list("ruleset_id", flat=True)) |
|
0 commit comments