Skip to content

Commit

Permalink
Defer loading the of the medias for widgets in a property for compati…
Browse files Browse the repository at this point in the history
…bility with ManifestStaticFilesStorage and CachedStaticFilesStorage, close #391
  • Loading branch information
Fantomas42 committed Jan 16, 2015
1 parent 7c672d0 commit ba4a85c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
24 changes: 13 additions & 11 deletions zinnia/admin/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from itertools import chain

from django.utils import six
from django.forms import Media
from django.utils.html import escape
from django.utils.html import format_html
from django.utils.safestring import mark_safe
Expand Down Expand Up @@ -55,14 +56,15 @@ def render_options(self, choices, selected_choices):
option_label, sort_fields))
return '\n'.join(output)

class Media:
@property
def media(self):
"""
MPTTFilteredSelectMultiple's Media.
"""
static = staticfiles_storage.url
js = (static('admin/js/core.js'),
static('zinnia/admin/mptt/js/mptt_m2m_selectbox.js'),
static('admin/js/SelectFilter2.js'))
js = ['admin/js/core.js',
'zinnia/admin/mptt/js/mptt_m2m_selectbox.js',
'admin/js/SelectFilter2.js']
return Media(js=[staticfiles_storage.url(path) for path in js])


class TagAutoComplete(widgets.AdminTextInputWidget):
Expand Down Expand Up @@ -97,17 +99,17 @@ def render(self, name, value, attrs=None):
output.append('</script>')
return mark_safe('\n'.join(output))

class Media:
@property
def media(self):
"""
TagAutoComplete's Media.
"""
static = lambda x: staticfiles_storage.url(
'zinnia/admin/select2/%s' % x)

css = {
'all': (static('css/select2.css'),)
}
js = (static('js/select2.js'),)
return Media(
css={'all': (static('css/select2.css'),)},
js=(static('js/select2.js'),)
)


class MiniTextarea(widgets.AdminTextareaWidget):
Expand Down
18 changes: 18 additions & 0 deletions zinnia/tests/test_admin_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"""Test cases for Zinnia's admin widgets"""
from django.test import TestCase
from django.utils.encoding import smart_text
from django.test.utils import override_settings

from zinnia.models.entry import Entry
from zinnia.signals import disconnect_entry_signals
Expand Down Expand Up @@ -63,6 +64,15 @@ def test_render_options(self):
'Category 1</option>\n<option value="2" selected="selected" '
'data-tree-id="1" data-left-value="2">|-- Category 2</option>')

@override_settings(STATIC_URL='/s/')
def test_media(self):
medias = MPTTFilteredSelectMultiple('test', False).media
self.assertEquals(medias._css, {})
self.assertEquals(medias._js, [
'/s/admin/js/core.js',
'/s/zinnia/admin/mptt/js/mptt_m2m_selectbox.js',
'/s/admin/js/SelectFilter2.js'])


class TagAutoCompleteTestCase(TestCase):

Expand Down Expand Up @@ -102,6 +112,14 @@ def test_render(self):
'\n });\n });'
'\n}(django.jQuery));\n</script>')

@override_settings(STATIC_URL='/s/')
def test_media(self):
medias = TagAutoComplete().media
self.assertEquals(medias._css,
{'all': ['/s/zinnia/admin/select2/css/select2.css']})
self.assertEquals(medias._js,
['/s/zinnia/admin/select2/js/select2.js'])


class MiniTextareaTestCase(TestCase):

Expand Down

0 comments on commit ba4a85c

Please sign in to comment.