Avoid loading admin_static in templates under Django>=1.10 (#27)

This commit is contained in:
Daniel Ruiz 2019-01-30 12:16:06 +01:00 committed by Dmitriy Sokolov
parent 6d0954e985
commit d83274f16b
5 changed files with 39 additions and 1 deletions

View File

@ -1,4 +1,4 @@
{% load i18n admin_static %}
{% load i18n static_or_admin_static %}
<h3>{% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}</h3>
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/widgets.css' %}">
<style>

View File

View File

@ -0,0 +1,14 @@
import django
from django.template import Library
register = Library()
@register.simple_tag()
def static(path):
if django.VERSION[:2] >= (1, 10):
from django.templatetags.static import static as _static
else:
from django.contrib.admin.templatetags.admin_static import static as _static
return _static(path)

View File

@ -4,6 +4,8 @@ from __future__ import unicode_literals
import datetime
from django.contrib.staticfiles.storage import staticfiles_storage
try:
import pytz
except ImportError:
@ -21,6 +23,7 @@ from django.contrib.auth.models import User
from django.utils.encoding import force_text
from .filter import DateRangeFilter, DateTimeRangeFilter
from .templatetags import static_or_admin_static
class MyModel(models.Model):
@ -274,3 +277,23 @@ class DateTimeRangeFilterTestCase(TestCase):
choice = select_by(filterspec.choices(changelist))
self.assertEqual(choice['query_string'], '?')
self.assertEqual(choice['system_name'], 'created-at')
class StaticOrAdminStaticTestCase(TestCase):
@override_settings(STATIC_URL='/my_statics/')
def test_returns_static_path_to_asset_when_staticfiles_app_is_not_installed(self):
self.assertEqual(static_or_admin_static.static('admin/css/widgets.css'),
'/my_statics/admin/css/widgets.css')
def test_returns_static_path_to_asset_when_staticfiles_app_is_installed(self):
with self.modify_settings(INSTALLED_APPS={
'append': 'django.contrib.staticfiles',
}):
old_url = staticfiles_storage.base_url
staticfiles_storage.base_url = '/test/'
try:
self.assertEqual(static_or_admin_static.static('admin/css/widgets.css'),
'/test/admin/css/widgets.css')
finally:
staticfiles_storage.base_url = old_url

View File

@ -23,6 +23,7 @@ settings.configure(
TEST_RUNNER='django.test.runner.DiscoverRunner',
USE_TZ=True,
TIME_ZONE='UTC',
STATIC_URL='/static/',
)
django.setup()