Skip to content

Commit

Permalink
Add a filter by vulnerability analyses state #98
Browse files Browse the repository at this point in the history
Signed-off-by: tdruez <[email protected]>
  • Loading branch information
tdruez committed Nov 7, 2024
1 parent e3ec773 commit 287b97c
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 7 deletions.
2 changes: 1 addition & 1 deletion product_portfolio/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
from product_portfolio.models import Product
from product_portfolio.models import ProductComponent
from product_portfolio.models import ProductPackage
from vulnerabilities.models import VulnerabilityAnalysis
from product_portfolio.models import ScanCodeProject
from vulnerabilities.models import VulnerabilityAnalysis


class NameVersionValidationFormMixin:
Expand Down
3 changes: 0 additions & 3 deletions product_portfolio/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,15 @@
from dje.models import DataspacedQuerySet
from dje.models import History
from dje.models import HistoryFieldsMixin
from dje.models import HistoryUserFieldsMixin
from dje.models import ReferenceNotesMixin
from dje.models import colored_icon_mixin_factory
from dje.validators import generic_uri_validator
from dje.validators import validate_url_segment
from dje.validators import validate_version
from vulnerabilities.fetch import fetch_for_queryset
from vulnerabilities.models import Vulnerability
from vulnerabilities.models import VulnerabilityAnalysisMixin
from vulnerabilities.models import VulnerabilityAnalysis


RELATION_LICENSE_EXPRESSION_HELP_TEXT = _(
"The License Expression assigned to a DejaCode Product Package or Product "
'Component is an editable value equivalent to a "concluded license" as determined '
Expand Down
12 changes: 9 additions & 3 deletions product_portfolio/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from collections import namedtuple
from operator import attrgetter
from urllib.parse import unquote_plus
from django.db.models import ObjectDoesNotExist

from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
Expand All @@ -26,6 +26,7 @@
from django.db import transaction
from django.db.models import Count
from django.db.models import F
from django.db.models import ObjectDoesNotExist
from django.db.models import Prefetch
from django.db.models.functions import Lower
from django.forms import modelformset_factory
Expand Down Expand Up @@ -117,9 +118,9 @@
from product_portfolio.forms import ProductGridConfigurationForm
from product_portfolio.forms import ProductPackageForm
from product_portfolio.forms import ProductPackageInlineForm
from product_portfolio.forms import VulnerabilityAnalysisForm
from product_portfolio.forms import PullProjectDataForm
from product_portfolio.forms import TableInlineFormSetHelper
from product_portfolio.forms import VulnerabilityAnalysisForm
from product_portfolio.models import CodebaseResource
from product_portfolio.models import Product
from product_portfolio.models import ProductComponent
Expand Down Expand Up @@ -1101,7 +1102,12 @@ class ProductTabVulnerabilitiesView(
Header("max_score", _("Score"), help_text="Severity score range", filter="max_score"),
Header("summary", _("Summary")),
Header("affected_packages", _("Affected packages"), help_text="Affected product packages"),
Header("exploitability", _("Exploitability analysis"), help_text="TODO"),
Header(
"exploitability",
_("Exploitability analysis"),
help_text="TODO",
filter="vulnerability_analyses__state",
),
)

def get_context_data(self, **kwargs):
Expand Down
4 changes: 4 additions & 0 deletions vulnerabilities/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,15 @@ class Meta:
model = Vulnerability
fields = [
"q",
"vulnerability_analyses__state",
]

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.filters["max_score"].extra["widget"] = DropDownRightWidget(anchor=self.anchor)
self.filters["vulnerability_analyses__state"].extra["widget"] = DropDownRightWidget(
anchor=self.anchor
)

def filter_by_score_range(self, queryset, name, value):
if value in vulnerability_score_ranges:
Expand Down

0 comments on commit 287b97c

Please sign in to comment.