Skip to content

Commit ee6bdb4

Browse files
committed
move signal in ad,in and view
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent 3328c73 commit ee6bdb4

3 files changed

Lines changed: 11 additions & 19 deletions

File tree

product_portfolio/admin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
from product_portfolio.models import ProductRelationStatus
7373
from product_portfolio.models import ProductStatus
7474
from reporting.filters import ReportingQueryListFilter
75+
from vulnerabilities.triage.engine import reevaluate_product_rulesets
7576
from vulnerabilities.triage.models import ProductTriageRuleset
7677

7778

@@ -247,6 +248,7 @@ def save_model(self, request, obj, form, change):
247248
relationship.uuid = uuid.uuid4()
248249
relationship.product = obj
249250
relationship.save()
251+
reevaluate_product_rulesets(obj)
250252

251253
def get_obj_perms_user_select_form(self, request):
252254
"""

product_portfolio/views.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
from vulnerabilities.models import Vulnerability
151151
from vulnerabilities.models import VulnerabilityAnalysis
152152
from vulnerabilities.models import get_risk_level
153+
from vulnerabilities.triage.engine import reevaluate_product_rulesets
153154
from vulnerabilities.triage.models import AnalysisPreset
154155
from vulnerabilities.triage.models import ProductTriageRuleset
155156
from vulnerabilities.triage.models import TriageAction
@@ -2249,20 +2250,19 @@ def manage_triage_rulesets_view(request, dataspace, name, version=""):
22492250
product=product, ruleset__enabled=True
22502251
).select_related("ruleset")
22512252
}
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:
22582257
ProductTriageRuleset.objects.create(
22592258
product=product,
22602259
ruleset=ruleset,
22612260
dataspace=product.dataspace,
22622261
)
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)
22662266
return JsonResponse({"success": True})
22672267

22682268
assigned_ruleset_ids = set(product.product_triage_rulesets.values_list("ruleset_id", flat=True))

vulnerabilities/triage/signals.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,10 @@
1111
from django.dispatch import receiver
1212

1313
from vulnerabilities.triage.engine import delete_preset_analyses_for_product
14-
from vulnerabilities.triage.engine import evaluate_ruleset
1514
from vulnerabilities.triage.engine import reevaluate_product_rulesets
1615
from vulnerabilities.triage.models import TriageRecord
1716

1817

19-
@receiver(post_save, sender="vulnerabilities_triage.ProductTriageRuleset")
20-
def evaluate_on_assign(sender, instance, created, **kwargs):
21-
"""Evaluate the ruleset against the product as soon as it is assigned."""
22-
if not created or not instance.ruleset.enabled:
23-
return
24-
25-
evaluate_ruleset(ruleset=instance.ruleset, product=instance.product)
26-
27-
2818
@receiver(post_delete, sender="vulnerabilities_triage.ProductTriageRuleset")
2919
def delete_triage_records_on_unassign(sender, instance, **kwargs):
3020
"""Delete triage records and associated preset analyses when a ruleset is de-assigned."""

0 commit comments

Comments
 (0)