@@ -133,21 +133,21 @@ class PackageViewSet(viewsets.ReadOnlyModelViewSet):
133133 # TODO: Find a good name for this endpoint
134134 @action (detail = False , methods = ["post" ])
135135 def fetch (self , request ):
136-
137136 filter_list = Q ()
138- # TODO: Do some validation here
137+ response = {}
138+ # TODO: Do some validation here of request body
139+
139140 for purl in request .data ["packages" ]:
140141 filter_list |= Q (
141142 ** {k : v for k , v in PackageURL .from_string (purl ).to_dict ().items () if v }
142143 )
143144
144- res = Package .objects .filter (filter_list )
145- response = {}
146- for purl in request .data ["packages" ]:
145+ # This handles the case when the said purl doesnt exist in db
147146 response [purl ] = {}
148- for p in res :
149- if p .package_url == purl :
150- response [purl ] = PackageSerializer (p , context = {"request" : request }).data
147+
148+ res = Package .objects .filter (filter_list )
149+ for p in res :
150+ response [p .package_url ] = PackageSerializer (p , context = {"request" : request }).data
151151
152152 return Response (response )
153153
@@ -172,16 +172,16 @@ class VulnerabilityViewSet(viewsets.ReadOnlyModelViewSet):
172172 @action (detail = False , methods = ["post" ])
173173 def fetch (self , request ):
174174 filter_list = Q ()
175- # TODO: Do some validation here
175+ response = {}
176+ # TODO: Do some validation here of request body
176177 for cve_id in request .data ["vulnerabilities" ]:
177178 filter_list |= Q (cve_id = cve_id )
178179
180+ # This handles the case when the said cve doesnt exist in db
181+ response [cve_id ] = {}
182+
179183 res = Vulnerability .objects .filter (filter_list )
180- response = {}
181- for cve in request .data ["vulnerabilities" ]:
182- response [cve ] = {}
183- for vuln in res :
184- if vuln .cve_id == cve :
185- response [cve ] = VulnerabilitySerializer (vuln , context = {"request" : request }).data
184+ for vuln in res :
185+ response [vuln .cve_id ] = VulnerabilitySerializer (vuln , context = {"request" : request }).data
186186
187187 return Response (response )
0 commit comments