7171from dje .templatetags .dje_tags import urlize_target_blank
7272from dje .utils import CHANGELIST_LINK_TEMPLATE
7373from dje .utils import get_instance_from_referer
74+ from dje .utils import is_purl_fragment
7475from license_library .models import License
7576from reporting .filters import ReportingQueryListFilter
7677
@@ -774,7 +775,17 @@ class PackageAdmin(
774775 "get_dataspace" ,
775776 )
776777 list_display_links = ("identifier" ,)
777- search_fields = ("filename" , "download_url" , "project" )
778+ search_fields = (
779+ "type" ,
780+ "namespace" ,
781+ "name" ,
782+ "version" ,
783+ "filename" ,
784+ "download_url" ,
785+ "sha1" ,
786+ "md5" ,
787+ "project" ,
788+ )
778789 ordering = ("-last_modified_date" ,)
779790 list_filter = (
780791 ("component" , HierarchyRelatedLookupListFilter ),
@@ -912,6 +923,7 @@ def get_queryset(self, request):
912923 return (
913924 super ()
914925 .get_queryset (request )
926+ .annotate_sortable_identifier ()
915927 .select_related (
916928 "usage_policy" ,
917929 )
@@ -938,6 +950,16 @@ def get_urls(self):
938950
939951 return urls + super ().get_urls ()
940952
953+ def get_search_results (self , request , queryset , search_term ):
954+ """Add searching on provided PackageURL identifier."""
955+ use_distinct = False
956+
957+ if is_purl_fragment (search_term ):
958+ if results := queryset .for_package_url (search_term ):
959+ return results , use_distinct
960+
961+ return super ().get_search_results (request , queryset , search_term )
962+
941963 def changeform_view (self , request , object_id = None , form_url = "" , extra_context = None ):
942964 """
943965 Add the `show_save_and_collect_data` in the context.
@@ -1053,6 +1075,10 @@ def inferred_url(self, obj):
10531075 return urlize_target_blank (inferred_url )
10541076 return ""
10551077
1078+ @admin .display (ordering = "sortable_identifier" )
1079+ def identifier (self , obj ):
1080+ return obj .identifier
1081+
10561082 def save_formset (self , request , form , formset , change ):
10571083 """
10581084 Update the completion_level on the related Component at the end of the saving process.
0 commit comments