diff options
| author | mackong <mackonghp@gmail.com> | 2018-08-18 22:16:22 +0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-08-18 10:16:22 -0400 |
| commit | c832885a3e8659d4a704bf103d523b610c24e4ec (patch) | |
| tree | a5152df7b70a72ba611f79c7ac045223261c6d29 | |
| parent | b042ab897636987701d3a35d6b566c6bef9d6ea2 (diff) | |
Fixed #29426 -- Made UUID inputs in the admin match the width of a UUID.
| -rw-r--r-- | django/contrib/admin/options.py | 1 | ||||
| -rw-r--r-- | django/contrib/admin/static/admin/css/forms.css | 2 | ||||
| -rw-r--r-- | django/contrib/admin/widgets.py | 5 | ||||
| -rw-r--r-- | tests/admin_widgets/tests.py | 14 |
4 files changed, 21 insertions, 1 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 474c4226f8..0617ab91a8 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -92,6 +92,7 @@ FORMFIELD_FOR_DBFIELD_DEFAULTS = { models.ImageField: {'widget': widgets.AdminFileWidget}, models.FileField: {'widget': widgets.AdminFileWidget}, models.EmailField: {'widget': widgets.AdminEmailInputWidget}, + models.UUIDField: {'widget': widgets.AdminUUIDInputWidget}, } csrf_protect_m = method_decorator(csrf_protect) diff --git a/django/contrib/admin/static/admin/css/forms.css b/django/contrib/admin/static/admin/css/forms.css index 5db927d6cf..62a093f952 100644 --- a/django/contrib/admin/static/admin/css/forms.css +++ b/django/contrib/admin/static/admin/css/forms.css @@ -353,7 +353,7 @@ body.popup .submit-row { width: 2.2em; } -.vTextField { +.vTextField, .vUUIDField { width: 20em; } diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 835e653ba6..32a1900cb1 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -351,6 +351,11 @@ class AdminBigIntegerFieldWidget(AdminIntegerFieldWidget): class_name = 'vBigIntegerField' +class AdminUUIDInputWidget(forms.TextInput): + def __init__(self, attrs=None): + super().__init__(attrs={'class': 'vUUIDField', **(attrs or {})}) + + # Mapping of lower case language codes [returned by Django's get_language()] # to language codes supported by select2. # See django/contrib/admin/static/admin/js/vendor/select2/i18n/* diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 43cf9f4182..f7c2a7865c 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -408,6 +408,20 @@ class AdminURLWidgetTest(SimpleTestCase): ) +class AdminUUIDWidgetTests(SimpleTestCase): + def test_attrs(self): + w = widgets.AdminUUIDInputWidget() + self.assertHTMLEqual( + w.render('test', '550e8400-e29b-41d4-a716-446655440000'), + '<input value="550e8400-e29b-41d4-a716-446655440000" type="text" class="vUUIDField" name="test">', + ) + w = widgets.AdminUUIDInputWidget(attrs={'class': 'myUUIDInput'}) + self.assertHTMLEqual( + w.render('test', '550e8400-e29b-41d4-a716-446655440000'), + '<input value="550e8400-e29b-41d4-a716-446655440000" type="text" class="myUUIDInput" name="test">', + ) + + @override_settings(ROOT_URLCONF='admin_widgets.urls') class AdminFileWidgetTests(TestDataMixin, TestCase): |
