mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	[3.1.x] Fixed #31590 -- Fixed ModelAdmin.date_hierarchy crash with an empty QuerySet.
Regression in55cdf6c52d. Backport of099bce1bf0from master
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							b46b0f80e8
						
					
				
				
					commit
					ef19aec2ca
				
			| @@ -380,12 +380,12 @@ def date_hierarchy(cl): | |||||||
|             # select appropriate start level |             # select appropriate start level | ||||||
|             date_range = cl.queryset.aggregate(first=models.Min(field_name), |             date_range = cl.queryset.aggregate(first=models.Min(field_name), | ||||||
|                                                last=models.Max(field_name)) |                                                last=models.Max(field_name)) | ||||||
|  |             if date_range['first'] and date_range['last']: | ||||||
|                 if dates_or_datetimes == 'datetimes': |                 if dates_or_datetimes == 'datetimes': | ||||||
|                     date_range = { |                     date_range = { | ||||||
|                         k: timezone.localtime(v) if timezone.is_aware(v) else v |                         k: timezone.localtime(v) if timezone.is_aware(v) else v | ||||||
|                         for k, v in date_range.items() |                         for k, v in date_range.items() | ||||||
|                     } |                     } | ||||||
|             if date_range['first'] and date_range['last']: |  | ||||||
|                 if date_range['first'].year == date_range['last'].year: |                 if date_range['first'].year == date_range['last'].year: | ||||||
|                     year_lookup = date_range['first'].year |                     year_lookup = date_range['first'].year | ||||||
|                     if date_range['first'].month == date_range['last'].month: |                     if date_range['first'].month == date_range['last'].month: | ||||||
|   | |||||||
| @@ -969,6 +969,11 @@ class AdminViewBasicTest(AdminViewBasicTestCase): | |||||||
|         self.assertEqual(response.context['site_url'], '/my-site-url/') |         self.assertEqual(response.context['site_url'], '/my-site-url/') | ||||||
|         self.assertContains(response, '<a href="/my-site-url/">View site</a>') |         self.assertContains(response, '<a href="/my-site-url/">View site</a>') | ||||||
|  |  | ||||||
|  |     def test_date_hierarchy_empty_queryset(self): | ||||||
|  |         self.assertIs(Question.objects.exists(), False) | ||||||
|  |         response = self.client.get(reverse('admin:admin_views_answer2_changelist')) | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |  | ||||||
|     @override_settings(TIME_ZONE='America/Sao_Paulo', USE_TZ=True) |     @override_settings(TIME_ZONE='America/Sao_Paulo', USE_TZ=True) | ||||||
|     def test_date_hierarchy_timezone_dst(self): |     def test_date_hierarchy_timezone_dst(self): | ||||||
|         # This datetime doesn't exist in this timezone due to DST. |         # This datetime doesn't exist in this timezone due to DST. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user