mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #29961 -- Made RelatedFieldWidgetWrapper hide related item links if wrapping a hidden widget.
This commit is contained in:
		
							
								
								
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -329,6 +329,7 @@ answer newbie questions, and generally made Django that much better: | ||||
|     Helen Sherwood-Taylor <helen@rrdlabs.co.uk> | ||||
|     Henrique Romano <onaiort@gmail.com> | ||||
|     Henry Dang <henrydangprg@gmail.com> | ||||
|     Hidde Bultsma | ||||
|     Himanshu Chauhan <hchauhan1404@outlook.com> | ||||
|     hipertracker@gmail.com | ||||
|     Hiroki Kiyohara <hirokiky@gmail.com> | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|     {{ rendered_widget }} | ||||
|     {% block links %} | ||||
|         {% spaceless %} | ||||
|         {% if not is_hidden %} | ||||
|         {% if can_change_related %} | ||||
|         <a class="related-widget-wrapper-link change-related" id="change_id_{{ name }}" | ||||
|             data-href-template="{{ change_related_template_url }}?{{ url_params }}" | ||||
| @@ -24,6 +25,7 @@ | ||||
|             <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}"> | ||||
|         </a> | ||||
|         {% endif %} | ||||
|         {% endif %} | ||||
|         {% endspaceless %} | ||||
|     {% endblock %} | ||||
| </div> | ||||
|   | ||||
| @@ -285,6 +285,7 @@ class RelatedFieldWidgetWrapper(forms.Widget): | ||||
|         ]) | ||||
|         context = { | ||||
|             'rendered_widget': self.widget.render(name, value, attrs), | ||||
|             'is_hidden': self.is_hidden, | ||||
|             'name': name, | ||||
|             'url_params': url_params, | ||||
|             'model': rel_opts.verbose_name, | ||||
|   | ||||
| @@ -687,6 +687,29 @@ class RelatedFieldWidgetWrapperTests(SimpleTestCase): | ||||
|         wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) | ||||
|         self.assertIs(wrapper.value_omitted_from_data({}, {}, 'band'), False) | ||||
|  | ||||
|     def test_widget_is_hidden(self): | ||||
|         rel = Album._meta.get_field('band').remote_field | ||||
|         widget = forms.HiddenInput() | ||||
|         widget.choices = () | ||||
|         wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) | ||||
|         self.assertIs(wrapper.is_hidden, True) | ||||
|         context = wrapper.get_context('band', None, {}) | ||||
|         self.assertIs(context['is_hidden'], True) | ||||
|         output = wrapper.render('name', 'value') | ||||
|         # Related item links are hidden. | ||||
|         self.assertNotIn('<a ', output) | ||||
|  | ||||
|     def test_widget_is_not_hidden(self): | ||||
|         rel = Album._meta.get_field('band').remote_field | ||||
|         widget = forms.Select() | ||||
|         wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) | ||||
|         self.assertIs(wrapper.is_hidden, False) | ||||
|         context = wrapper.get_context('band', None, {}) | ||||
|         self.assertIs(context['is_hidden'], False) | ||||
|         output = wrapper.render('name', 'value') | ||||
|         # Related item links are present. | ||||
|         self.assertIn('<a ', output) | ||||
|  | ||||
|  | ||||
| @override_settings(ROOT_URLCONF='admin_widgets.urls') | ||||
| class AdminWidgetSeleniumTestCase(AdminSeleniumTestCase): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user