File tree Expand file tree Collapse file tree 2 files changed +26
-6
lines changed Expand file tree Collapse file tree 2 files changed +26
-6
lines changed Original file line number Diff line number Diff line change @@ -144,13 +144,11 @@ def prefetch_latest_build(self):
144144
145145        # Prefetch the latest build for each project. 
146146        subquery  =  Subquery (
147-             Build .internal .filter (project = OuterRef ("project_id" ))
148-             .order_by ("-date" )
149-             .values_list ("id" , flat = True )[:1 ]
147+             Build .internal .filter (project = OuterRef ("project_id" )).order_by ("-date" ).values ("pk" )[:1 ]
150148        )
151149        latest_build  =  Prefetch (
152150            "builds" ,
153-             Build .internal .filter (pk__in = subquery ),
151+             Build .objects .filter (pk__in = subquery ). select_related ( "version" ),
154152            to_attr = self .model .LATEST_BUILD_CACHE ,
155153        )
156154        return  self .prefetch_related (latest_build )
Original file line number Diff line number Diff line change 11from  unittest  import  mock 
22
3- import  pytest 
43from  allauth .socialaccount .models  import  SocialAccount 
5- from  django .conf  import  settings 
64from  django .contrib .auth .models  import  User 
75from  django .http .response  import  HttpResponseRedirect 
86from  django .test  import  TestCase , override_settings 
@@ -380,6 +378,30 @@ def setUp(self):
380378        self .client .login (username = "eric" , password = "test" )
381379        self .project  =  get (Project , slug = "pip" , users = [self .user ])
382380
381+     def  test_dashboard_number_of_queries (self ):
382+         for  i  in  range (10 ):
383+             project  =  get (
384+                 Project ,
385+                 slug = f"project-{ i }  " ,
386+                 users = [self .user ],
387+             )
388+             version  =  project .versions .first ()
389+             version .active  =  True 
390+             version .built  =  True 
391+             version .save ()
392+             for  _  in  range (3 ):
393+                 get (
394+                     Build ,
395+                     project = project ,
396+                     version = version ,
397+                     success = True ,
398+                     state = BUILD_STATE_FINISHED ,
399+                 )
400+ 
401+         with  self .assertNumQueries (24 ):
402+             r  =  self .client .get (reverse (("projects_dashboard" )))
403+         assert  r .status_code  ==  200 
404+ 
383405    def  test_versions_page (self ):
384406        self .project .versions .create (verbose_name = "1.0" )
385407
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments