@@ -54,13 +54,25 @@ def to_representation(self, instance):
5454
5555
5656class VulnerabilityReferenceSerializer (serializers .ModelSerializer ):
57- scores = VulnerabilitySeveritySerializer ( many = True , source = "vulnerabilityseverity_set" )
57+ scores = serializers . SerializerMethodField ( )
5858 reference_url = serializers .CharField (source = "url" )
5959
6060 class Meta :
6161 model = VulnerabilityReference
6262 fields = ["reference_url" , "reference_id" , "reference_type" , "scores" , "url" ]
6363
64+ def get_scores (self , instance ):
65+ severities_related_to_reference = [
66+ severity
67+ for severity in self .context .get ("severities" , [])
68+ if severity .url == instance .url
69+ ]
70+
71+ return VulnerabilitySeveritySerializer (
72+ severities_related_to_reference ,
73+ many = True ,
74+ ).data
75+
6476
6577class BaseResourceSerializer (serializers .HyperlinkedModelSerializer ):
6678 """
@@ -199,8 +211,7 @@ class VulnerabilitySerializer(BaseResourceSerializer):
199211 many = True , source = "filtered_fixed_packages" , read_only = True
200212 )
201213 affected_packages = MinimalPackageSerializer (many = True , read_only = True )
202-
203- references = VulnerabilityReferenceSerializer (many = True , source = "vulnerabilityreference_set" )
214+ references = serializers .SerializerMethodField ()
204215 aliases = AliasSerializer (many = True , source = "alias" )
205216 exploits = ExploitSerializer (many = True , read_only = True )
206217 weaknesses = WeaknessSerializer (many = True )
@@ -214,10 +225,22 @@ def to_representation(self, instance):
214225
215226 return data
216227
228+ def get_references (self , vulnerability ):
229+ references = vulnerability .vulnerabilityreference_set .all ()
230+ severities = vulnerability .severities .all ()
231+
232+ serialized_references = VulnerabilityReferenceSerializer (
233+ references ,
234+ context = {"severities" : severities },
235+ many = True ,
236+ ).data
237+
238+ return serialized_references
239+
217240 def get_severity_range_score (self , instance ):
218241 severity_vectors = []
219242 severity_values = set ()
220- for s in instance .severities :
243+ for s in instance .severities . all () :
221244 if s .scoring_system == EPSS .identifier :
222245 continue
223246
0 commit comments