MCPcopy Index your code
hub / github.com/aboutcode-org/vulnerablecode / list

Method list

vulnerabilities/api_v2.py:304–344  ·  view source on GitHub ↗
(self, request, *args, **kwargs)

Source from the content-addressed store, hash-verified

302 return queryset.with_is_vulnerable()
303
304 def list(self, request, *args, **kwargs):
305 queryset = self.get_queryset()
306
307 # Apply pagination
308 page = self.paginate_queryset(queryset)
309 if page is not None:
310 # Collect only vulnerabilities for packages in the current page
311 vulnerabilities = set()
312 for package in page:
313 vulnerabilities.update(package.affected_by_vulnerabilities.all())
314 vulnerabilities.update(package.fixing_vulnerabilities.all())
315
316 # Serialize the vulnerabilities with vulnerability_id as keys
317 vulnerability_data = {
318 vuln.vulnerability_id: VulnerabilityV2Serializer(vuln).data
319 for vuln in vulnerabilities
320 }
321
322 # Serialize the current page of packages
323 serializer = self.get_serializer(page, many=True)
324 data = serializer.data
325
326 # Use 'self.get_paginated_response' to include pagination data
327 return self.get_paginated_response(
328 {"vulnerabilities": vulnerability_data, "packages": data}
329 )
330
331 # If pagination is not applied, collect vulnerabilities for all packages
332 vulnerabilities = set()
333 for package in queryset:
334 vulnerabilities.update(package.affected_by_vulnerabilities.all())
335 vulnerabilities.update(package.fixing_vulnerabilities.all())
336
337 vulnerability_data = {
338 vuln.vulnerability_id: VulnerabilityV2Serializer(vuln).data for vuln in vulnerabilities
339 }
340
341 # Serialize all packages when pagination is not applied
342 serializer = self.get_serializer(queryset, many=True)
343 data = serializer.data
344 return Response({"vulnerabilities": vulnerability_data, "packages": data})
345
346 @extend_schema(
347 request=PackageurlListSerializer,

Callers 1

settings.pyFile · 0.45

Calls 3

get_querysetMethod · 0.95
allMethod · 0.45

Tested by

no test coverage detected