@@ -579,13 +579,11 @@ def improve_packages_from_purldb(self, user):
579579 # Update the Product Package relationship `license_expression` if the
580580 # Package.declared_license_expression was updated from "unknwon" value using
581581 # PurlDB data.
582- productpackages_unknown_licenses = self .productpackages .filter (
583- package__in = updated_packages , license_expression = "unknown"
584- )
585- for product_package in productpackages_unknown_licenses :
586- package_license_expression = product_package .package .declared_license_expression
587- if package_license_expression and package_license_expression != "unknown" :
588- product_package .update (license_expression = package_license_expression )
582+ productpackages_qs = self .productpackages .filter (
583+ package__in = updated_packages
584+ ).license_unknown ()
585+ for product_package in productpackages_qs :
586+ product_package .update_license_unknown ()
589587
590588 return updated_packages
591589
@@ -707,6 +705,9 @@ class ProductPackageQuerySet(ProductSecuredQuerySet):
707705 def vulnerable (self ):
708706 return self .filter (weighted_risk_score__isnull = False )
709707
708+ def license_unknown (self ):
709+ return self .filter (license_expression = "unknown" )
710+
710711 def annotate_weighted_risk_score (self ):
711712 """Annotate the Queeryset with the weighted_risk_score computed value."""
712713 purpose = ProductItemPurpose .objects .filter (productpackage = OuterRef ("pk" ))
@@ -1100,6 +1101,20 @@ def __str__(self):
11001101 def permission_protected_fields (self ):
11011102 return {"review_status" : "change_review_status_on_productpackage" }
11021103
1104+ def update_license_unknown (self ):
1105+ """
1106+ Update this Product Package relationship `license_expression` from "unknown"
1107+ if the related Package `declared_license_expression` has known value.
1108+ """
1109+ package_license_expression = self .package .declared_license_expression
1110+ conditions = [
1111+ self .license_expression == "unknown" ,
1112+ package_license_expression ,
1113+ package_license_expression != "unknown" ,
1114+ ]
1115+ if all (conditions ):
1116+ self .update (license_expression = package_license_expression )
1117+
11031118
11041119class ProductAssignedLicense (DataspacedModel ):
11051120 product = models .ForeignKey (
0 commit comments