From ce7faf7d61b281617f9560f79b0d96777331cac8 Mon Sep 17 00:00:00 2001 From: tdruez Date: Thu, 18 Jul 2024 17:31:41 +0400 Subject: [PATCH] Add inline help in the headers of the Dependencies tab #138 Add filter on package relationships Signed-off-by: tdruez --- dje/tasks.py | 4 +- product_portfolio/filters.py | 8 ++++ .../tabs/tab_dependencies.html | 46 ++++++++++++++----- product_portfolio/views.py | 8 ++++ 4 files changed, 54 insertions(+), 12 deletions(-) diff --git a/dje/tasks.py b/dje/tasks.py index a49ef1e3..1d25395c 100644 --- a/dje/tasks.py +++ b/dje/tasks.py @@ -208,7 +208,9 @@ def pull_project_data_from_scancodeio(scancodeproject_uuid): scancode_project.status = ScanCodeProject.Status.SUCCESS for object_type, values in created.items(): - msg = f"- Imported {len(values)} {object_type}{pluralize(values)}." + object_type_plural = f"{object_type}{pluralize(values)}" + object_type_plural = object_type_plural.replace("dependencys", "dependencies") + msg = f"- Imported {len(values)} {object_type_plural}." scancode_project.append_to_log(msg) for object_type, values in existing.items(): diff --git a/product_portfolio/filters.py b/product_portfolio/filters.py index cf592adf..a9d16fdd 100644 --- a/product_portfolio/filters.py +++ b/product_portfolio/filters.py @@ -333,6 +333,12 @@ class DependencyFilterSet(DataspacedFilterSet): "resolved_to_package__version", ], ) + for_package = HasRelationFilter( + widget=DropDownWidget(anchor="#dependencies"), + ) + resolved_to_package = HasRelationFilter( + widget=DropDownWidget(anchor="#dependencies"), + ) is_runtime = BooleanChoiceFilter( widget=DropDownWidget(anchor="#dependencies"), ) @@ -349,6 +355,8 @@ class DependencyFilterSet(DataspacedFilterSet): class Meta: model = ProductDependency fields = [ + "for_package", + "resolved_to_package", "scope", "datasource_id", "is_runtime", diff --git a/product_portfolio/templates/product_portfolio/tabs/tab_dependencies.html b/product_portfolio/templates/product_portfolio/tabs/tab_dependencies.html index ca854fb9..1cfdbffb 100644 --- a/product_portfolio/templates/product_portfolio/tabs/tab_dependencies.html +++ b/product_portfolio/templates/product_portfolio/tabs/tab_dependencies.html @@ -34,31 +34,52 @@ - {% trans 'Package URL' %} + {% trans 'Package URL' %} - {% trans 'For package' %} + + {% trans 'For package' %} + + {{ filter_dependency.form.for_package }} - {% trans 'Resolved to package' %} + + {% trans 'Resolved to package' %} + + {{ filter_dependency.form.resolved_to_package }} - {% trans 'Scope' %} + + {% trans 'Scope' %} + - {% trans 'Runtime' %} + + {% trans 'Extracted requirement' %} + + + + + {% trans 'Runtime' %} + {{ filter_dependency.form.is_runtime }} - - {% trans 'Optional' %} + + + {% trans 'Optional' %} + {{ filter_dependency.form.is_optional }} - - {% trans 'Resolved' %} + + + {% trans 'Resolved' %} + {{ filter_dependency.form.is_resolved }} - - {% trans 'Direct' %} + + + {% trans 'Direct' %} + {{ filter_dependency.form.is_direct }} @@ -92,6 +113,9 @@ {{ dependency.scope }} + + {{ dependency.extracted_requirement }} + {{ dependency.is_runtime|as_icon }} diff --git a/product_portfolio/views.py b/product_portfolio/views.py index 096e384b..cf415d18 100644 --- a/product_portfolio/views.py +++ b/product_portfolio/views.py @@ -118,6 +118,7 @@ from product_portfolio.models import CodebaseResource from product_portfolio.models import Product from product_portfolio.models import ProductComponent +from product_portfolio.models import ProductDependency from product_portfolio.models import ProductPackage from product_portfolio.models import ScanCodeProject @@ -970,12 +971,19 @@ def get_context_data(self, **kwargs): page_number = self.request.GET.get(self.query_dict_page_param) page_obj = paginator.get_page(page_number) + help_texts = { + field.name: field.help_text + for field in ProductDependency._meta.get_fields() + if hasattr(field, "help_text") + } + context_data.update( { "filter_dependency": filter_dependency, "page_obj": page_obj, "total_count": self.object.dependencies.count(), "search_query": self.request.GET.get("dependencies-q", ""), + "help_texts": help_texts, } )