Fixed #25903 -- Fixed the admin's list_editable add/change buttons.

This commit is contained in:
Tim Graham 2015-12-21 08:36:41 -05:00
parent d7580e286a
commit f18b08748a
5 changed files with 54 additions and 20 deletions

View File

@ -162,6 +162,24 @@
event.preventDefault(); event.preventDefault();
opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener")); opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener"));
}); });
$('body').on('click', '.related-widget-wrapper-link', function(e) {
e.preventDefault();
if (this.href) {
var event = $.Event('django:show-related', {href: this.href});
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
showRelatedObjectPopup(this);
}
}
});
$('body').on('change', '.related-widget-wrapper select', function(e) {
var event = $.Event('django:update-related');
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
updateRelatedObjectLinks(this);
}
});
$('.related-widget-wrapper select').trigger('change');
}); });
})(django.jQuery); })(django.jQuery);

View File

@ -20,24 +20,6 @@
showRelatedObjectLookupPopup(this); showRelatedObjectLookupPopup(this);
} }
}); });
$('body').on('click', '.related-widget-wrapper-link', function(e) {
e.preventDefault();
if (this.href) {
var event = $.Event('django:show-related', {href: this.href});
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
showRelatedObjectPopup(this);
}
}
});
$('body').on('change', '.related-widget-wrapper select', function(e) {
var event = $.Event('django:update-related');
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
updateRelatedObjectLinks(this);
}
});
$('.related-widget-wrapper select').trigger('change');
if (modelName) { if (modelName) {
$('form#' + modelName + '_form :input:visible:enabled:first').focus(); $('form#' + modelName + '_form :input:visible:enabled:first').focus();

View File

@ -61,3 +61,6 @@ Bugfixes
* Fixed ``migrate --fake-initial`` detection of many-to-many tables * Fixed ``migrate --fake-initial`` detection of many-to-many tables
(:ticket:`25922`). (:ticket:`25922`).
* Restored the functionality of the admin's ``list_editable`` add and change
buttons (:ticket:`25903`).

View File

@ -87,8 +87,11 @@ class ChapterXtra1Admin(admin.ModelAdmin):
class ArticleAdmin(admin.ModelAdmin): class ArticleAdmin(admin.ModelAdmin):
list_display = ('content', 'date', callable_year, 'model_year', list_display = (
'modeladmin_year', 'model_year_reversed') 'content', 'date', callable_year, 'model_year', 'modeladmin_year',
'model_year_reversed', 'section',
)
list_editable = ('section',)
list_filter = ('date', 'section') list_filter = ('date', 'section')
view_on_site = False view_on_site = False
fieldsets = ( fieldsets = (

View File

@ -4558,6 +4558,34 @@ class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase):
self.assertEqual(Pizza.objects.count(), 1) self.assertEqual(Pizza.objects.count(), 1)
self.assertEqual(Topping.objects.count(), 2) self.assertEqual(Topping.objects.count(), 2)
def test_list_editable_popups(self):
"""
list_editable foreign keys have add/change popups.
"""
s1 = Section.objects.create(name='Test section')
Article.objects.create(
content='<p>Middle content</p>',
date=datetime.datetime(2008, 3, 18, 11, 54, 58),
section=s1,
)
self.admin_login(username='super', password='secret', login_url=reverse('admin:index'))
self.selenium.get(self.live_server_url + reverse('admin:admin_views_article_changelist'))
# Change popup
self.selenium.find_element_by_id('change_id_form-0-section').click()
self.wait_for_popup()
self.selenium.switch_to.window(self.selenium.window_handles[-1])
self.wait_for_text('#content h1', 'Change section')
self.selenium.close()
self.selenium.switch_to.window(self.selenium.window_handles[0])
# Add popup
self.selenium.find_element_by_id('add_id_form-0-section').click()
self.wait_for_popup()
self.selenium.switch_to.window(self.selenium.window_handles[-1])
self.wait_for_text('#content h1', 'Add section')
self.selenium.close()
self.selenium.switch_to.window(self.selenium.window_handles[0])
class SeleniumAdminViewsChromeTests(SeleniumAdminViewsFirefoxTests): class SeleniumAdminViewsChromeTests(SeleniumAdminViewsFirefoxTests):
webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'