MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / get_context_data

Method get_context_data

vulnerabilities/views.py:653–755  ·  view source on GitHub ↗

Build context with preloaded QuerySets and minimize redundant queries.

(self, **kwargs)

Source from the content-addressed store, hash-verified

651 )
652
653 def get_context_data(self, **kwargs):
654 """
655 Build context with preloaded QuerySets and minimize redundant queries.
656 """
657 context = super().get_context_data(**kwargs)
658 advisory = self.object
659
660 # Pre-fetch and process data in Python instead of the template
661 weaknesses_present_in_db = [
662 weakness_object
663 for weakness_object in advisory.weaknesses.all()
664 if weakness_object.weakness
665 ]
666
667 valid_severities = (
668 self.object.severities.exclude(scoring_system=EPSS.identifier)
669 .filter(scoring_elements__isnull=False, scoring_system__in=SCORING_SYSTEMS.values())
670 .exclude(scoring_elements="")
671 )
672
673 epss_severity = advisory.severities.filter(scoring_system="epss").first()
674 epss_data = None
675 epss_advisory = None
676 if not epss_severity:
677 epss_advisory = (
678 advisory.related_advisory_severities.filter(
679 datasource_id=EPSSImporterPipeline.pipeline_id
680 )
681 .latest_per_avid()
682 .first()
683 )
684 if epss_advisory:
685 epss_severity = epss_advisory.severities.filter(scoring_system="epss").first()
686 if epss_severity:
687 # If the advisory itself does not have EPSS severity, but has a related advisory with EPSS severity, we use the related advisory's EPSS severity and URL as the source of EPSS data.
688 epss_data = {
689 "percentile": epss_severity.scoring_elements,
690 "score": epss_severity.value,
691 "published_at": epss_severity.published_at,
692 "source": epss_advisory.url if epss_advisory else advisory.url,
693 "advisory": epss_advisory if epss_advisory else advisory,
694 }
695
696 ssvc_entries = []
697 seen = set()
698
699 severity_vectors = []
700
701 for severity in valid_severities:
702 try:
703 vector_values_system = SCORING_SYSTEMS.get(severity.scoring_system)
704 if not vector_values_system:
705 logging.error(f"Unknown scoring system: {severity.scoring_system}")
706 continue
707 if vector_values_system.identifier in ["cvssv3.1_qr"]:
708 continue
709 vector_values = vector_values_system.get(severity.scoring_elements)
710 if vector_values:

Callers

nothing calls this directly

Calls 4

latest_per_avidMethod · 0.80
get_context_dataMethod · 0.45
allMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected