1414from django .contrib import messages
1515from django .core .exceptions import ValidationError
1616from django .core .mail import send_mail
17+ from django .db .models import Prefetch
1718from django .http .response import Http404
1819from django .shortcuts import redirect
1920from django .shortcuts import render
2223from django .views import generic
2324from django .views .generic .detail import DetailView
2425from django .views .generic .list import ListView
25- from django .db .models import Prefetch
2626
2727from vulnerabilities import models
2828from vulnerabilities .forms import ApiUserCreationForm
@@ -159,30 +159,26 @@ def get_queryset(self):
159159 "exploits" ,
160160 Prefetch (
161161 "affecting_packages" ,
162- queryset = models .Package .objects .only (
163- "type" , "namespace" , "name" , "version"
164- ),
162+ queryset = models .Package .objects .only ("type" , "namespace" , "name" , "version" ),
165163 ),
166164 Prefetch (
167165 "fixed_by_packages" ,
168- queryset = models .Package .objects .only (
169- "type" , "namespace" , "name" , "version"
170- ),
166+ queryset = models .Package .objects .only ("type" , "namespace" , "name" , "version" ),
171167 ),
172168 )
173169 )
174170
175-
176171 def get_context_data (self , ** kwargs ):
177172 """
178173 Build context with preloaded QuerySets and minimize redundant queries.
179174 """
180175 context = super ().get_context_data (** kwargs )
181176 vulnerability = self .object
182-
177+
183178 # Pre-fetch and process data in Python instead of the template
184179 weaknesses_present_in_db = [
185- weakness_object for weakness_object in vulnerability .weaknesses .all ()
180+ weakness_object
181+ for weakness_object in vulnerability .weaknesses .all ()
186182 if weakness_object .weakness
187183 ]
188184
@@ -201,6 +197,7 @@ def get_context_data(self, **kwargs):
201197 )
202198 return context
203199
200+
204201class HomePage (View ):
205202 template_name = "index.html"
206203
@@ -285,19 +282,19 @@ def get_queryset(self):
285282 """
286283 Prefetch and optimize related data to minimize database hits.
287284 """
288- return super ().get_queryset ().prefetch_related (
289- Prefetch (
285+ return (
286+ super ()
287+ .get_queryset ()
288+ .prefetch_related (
289+ Prefetch (
290290 "affecting_packages" ,
291- queryset = models .Package .objects .only (
292- "type" , "namespace" , "name" , "version"
293- ),
291+ queryset = models .Package .objects .only ("type" , "namespace" , "name" , "version" ),
294292 ),
295293 Prefetch (
296294 "fixed_by_packages" ,
297- queryset = models .Package .objects .only (
298- "type" , "namespace" , "name" , "version"
299- ),
295+ queryset = models .Package .objects .only ("type" , "namespace" , "name" , "version" ),
300296 ),
297+ )
301298 )
302299
303300 def get_context_data (self , ** kwargs ):
@@ -311,9 +308,11 @@ def get_context_data(self, **kwargs):
311308 sorted_affected_packages ,
312309 all_affected_fixed_by_matches ,
313310 ) = vulnerability .aggregate_fixed_and_affected_packages ()
314- context .update ({
315- "affected_packages" : sorted_affected_packages ,
316- "fixed_by_packages" : sorted_fixed_by_packages ,
317- "all_affected_fixed_by_matches" : all_affected_fixed_by_matches ,
318- })
311+ context .update (
312+ {
313+ "affected_packages" : sorted_affected_packages ,
314+ "fixed_by_packages" : sorted_fixed_by_packages ,
315+ "all_affected_fixed_by_matches" : all_affected_fixed_by_matches ,
316+ }
317+ )
319318 return context
0 commit comments