summaryrefslogtreecommitdiff
path: root/tests/admin_widgets
diff options
context:
space:
mode:
authorRiccardo Magliocchetti <riccardo.magliocchetti@gmail.com>2014-04-05 17:58:05 +0200
committerTim Graham <timograham@gmail.com>2015-02-04 09:05:41 -0500
commit4957b8a40615a082c9218c7c662fb8fccf46b14f (patch)
tree4380b394029cde05d300228062fdaaee07854eaa /tests/admin_widgets
parent16e3910e9cb93550a500553b2fb3da2b1822478b (diff)
[1.8.x] Fixed #14497 -- Improved admin widget for "read only" FileFields
Based on patch by Adam J Forster, Paul Collins, and Julien. Backport of 2be621e44c1b5b68c895383f3e20b1f17ddb447a from master
Diffstat (limited to 'tests/admin_widgets')
-rw-r--r--tests/admin_widgets/tests.py43
-rw-r--r--tests/admin_widgets/widgetadmin.py7
2 files changed, 42 insertions, 8 deletions
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py
index c5795c87fb..ac0854ca25 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -350,26 +350,55 @@ class AdminURLWidgetTest(DjangoTestCase):
)
-class AdminFileWidgetTest(DjangoTestCase):
- def test_render(self):
+@override_settings(
+ PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
+ ROOT_URLCONF='admin_widgets.urls',
+)
+class AdminFileWidgetTests(DjangoTestCase):
+ fixtures = ['admin-widgets-users.xml']
+
+ def setUp(self):
band = models.Band.objects.create(name='Linkin Park')
- album = band.album_set.create(
+ self.album = band.album_set.create(
name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg'
)
+ def test_render(self):
w = widgets.AdminFileWidget()
self.assertHTMLEqual(
- w.render('test', album.cover_art),
- '<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">albums\hybrid_theory.jpg</a> <span class="clearable-file-input"><input type="checkbox" name="test-clear" id="test-clear_id" /> <label for="test-clear_id">Clear</label></span><br />Change: <input type="file" name="test" /></p>' % {
- 'STORAGE_URL': default_storage.url('')
+ w.render('test', self.album.cover_art),
+ '<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/'
+ 'hybrid_theory.jpg">albums\hybrid_theory.jpg</a> '
+ '<span class="clearable-file-input">'
+ '<input type="checkbox" name="test-clear" id="test-clear_id" /> '
+ '<label for="test-clear_id">Clear</label></span><br />'
+ 'Change: <input type="file" name="test" /></p>' % {
+ 'STORAGE_URL': default_storage.url(''),
},
)
-
self.assertHTMLEqual(
w.render('test', SimpleUploadedFile('test', b'content')),
'<input type="file" name="test" />',
)
+ def test_readonly_fields(self):
+ """
+ File widgets should render as a link when they're marked "read only."
+ """
+ self.client.login(username="super", password="secret")
+ response = self.client.get('/admin_widgets/album/%s/' % self.album.id)
+ self.assertContains(
+ response,
+ '<p><a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">'
+ 'albums\hybrid_theory.jpg</a></p>' % {'STORAGE_URL': default_storage.url('')},
+ html=True,
+ )
+ self.assertNotContains(
+ response,
+ '<input type="file" name="cover_art" id="id_cover_art" />',
+ html=True,
+ )
+
@override_settings(ROOT_URLCONF='admin_widgets.urls')
class ForeignKeyRawIdWidgetTest(DjangoTestCase):
diff --git a/tests/admin_widgets/widgetadmin.py b/tests/admin_widgets/widgetadmin.py
index fa46530037..6b205b70dc 100644
--- a/tests/admin_widgets/widgetadmin.py
+++ b/tests/admin_widgets/widgetadmin.py
@@ -24,6 +24,11 @@ class EventAdmin(admin.ModelAdmin):
raw_id_fields = ['main_band', 'supporting_bands']
+class AlbumAdmin(admin.ModelAdmin):
+ fields = ('name', 'cover_art',)
+ readonly_fields = ('cover_art',)
+
+
class SchoolAdmin(admin.ModelAdmin):
filter_vertical = ('students',)
filter_horizontal = ('alumni',)
@@ -37,7 +42,7 @@ site.register(models.CarTire, CarTireAdmin)
site.register(models.Member)
site.register(models.Band)
site.register(models.Event, EventAdmin)
-site.register(models.Album)
+site.register(models.Album, AlbumAdmin)
site.register(models.Inventory)