Skip to content

Commit 162fcec

Browse files
committed
refine product rule management UI
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent b309fb3 commit 162fcec

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

product_portfolio/templates/product_portfolio/modals/manage_triage_rulesets_form.html

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,30 @@
1414
id="ruleset_{{ ruleset.uuid }}"
1515
{% if ruleset.id in assigned_ruleset_ids %}checked{% endif %}>
1616
<span class="flex-grow-1">
17-
<span class="d-flex justify-content-between align-items-baseline">
17+
<span class="d-flex justify-content-between align-items-baseline mb-1">
1818
<strong>{{ ruleset.name }}</strong>
1919
<span class="badge bg-secondary-subtle text-secondary-emphasis ms-2 flex-shrink-0">
2020
{% trans "Precedence:" %} {{ ruleset.precedence }}
2121
</span>
2222
</span>
23-
<span class="d-block small text-body-secondary">
24-
{{ ruleset.action_label }}{% if ruleset.description %}, {{ ruleset.description }}{% endif %}
23+
{% if ruleset.description %}
24+
<span class="d-block small text-body-secondary mb-1">{{ ruleset.description }}</span>
25+
{% endif %}
26+
{% if ruleset.active_rules %}
27+
<span class="d-flex align-items-center flex-wrap gap-1 mb-1">
28+
<span class="small text-body-secondary me-1">{% trans "Conditions:" %}</span>
29+
{% for rule in ruleset.active_rules %}
30+
<span class="badge bg-secondary-subtle text-secondary-emphasis fw-normal">
31+
{{ rule.label }}{% if rule.params_str %} ({{ rule.params_str }}){% endif %}
32+
</span>
33+
{% endfor %}
34+
</span>
35+
{% endif %}
36+
<span class="d-flex align-items-center gap-2 mt-1">
37+
<span class="small text-body-secondary">{% trans "Recommended action:" %}</span>
38+
<span class="badge {{ ruleset.action_badge_class }} text-nowrap">
39+
<i class="fas {{ ruleset.action_icon }} me-1"></i>{{ ruleset.action_label }}
40+
</span>
2541
</span>
2642
</span>
2743
</label>

product_portfolio/views.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
from vulnerabilities.triage.models import TriageAction
156156
from vulnerabilities.triage.models import TriageRecord
157157
from vulnerabilities.triage.models import TriageRuleset
158+
from vulnerabilities.triage.rules import RULE_REGISTRY as TRIAGE_RULE_REGISTRY
158159

159160
TRIAGE_ACTION_STYLES = {
160161
"upgrade": ("bg-danger-subtle text-danger-emphasis", "fa-arrow-circle-up"),
@@ -2173,6 +2174,22 @@ def manage_triage_rulesets_view(request, dataspace, name, version=""):
21732174
action_labels = dict(TriageAction.choices)
21742175
for ruleset in available_rulesets:
21752176
ruleset.action_label = action_labels.get(ruleset.action, ruleset.action)
2177+
action_badge_class, action_icon = TRIAGE_ACTION_STYLES.get(
2178+
ruleset.action, TRIAGE_ACTION_DEFAULT_STYLE
2179+
)
2180+
ruleset.action_badge_class = action_badge_class
2181+
ruleset.action_icon = action_icon
2182+
active_rules = []
2183+
for rule_type, config in ruleset.rules_config.items():
2184+
if rule_type not in TRIAGE_RULE_REGISTRY or not config.get("is_active"):
2185+
continue
2186+
handler = TRIAGE_RULE_REGISTRY[rule_type]
2187+
params = {key: value for key, value in config.items() if key != "is_active"}
2188+
params_str = ", ".join(
2189+
f"{key.replace('_', ' ')}: {value}" for key, value in params.items()
2190+
)
2191+
active_rules.append({"label": handler.label, "params_str": params_str})
2192+
ruleset.active_rules = active_rules
21762193

21772194
return render(
21782195
request,

0 commit comments

Comments
 (0)