Expanded the fix in [12663] to cover CSS declarations, which were also affected by the bug. Refs #12879.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12665 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
James Bennett 2010-03-03 08:17:51 +00:00
parent 9a82ca0a36
commit 6edcd11aed
2 changed files with 8 additions and 4 deletions

View File

@ -82,7 +82,9 @@ class Media(StrAndUnicode):
def add_css(self, data): def add_css(self, data):
if data: if data:
for medium, paths in data.items(): for medium, paths in data.items():
self._css.setdefault(medium, []).extend([path for path in paths if path not in self._css[medium]]) for path in paths:
if not self._css.get(medium) or path not in self._css[medium]:
self._css.setdefault(medium, []).append(path)
def __add__(self, other): def __add__(self, other):
combined = Media() combined = Media()

View File

@ -112,15 +112,17 @@ media_tests = r"""
<script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script>
<script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>
# Regression check for #12879: specifying the same JS file multiple # Regression check for #12879: specifying the same CSS or JS file
# times in a single Media instance should result in that file only # multiple times in a single Media instance should result in that file
# being included once. # only being included once.
>>> class MyWidget4(TextInput): >>> class MyWidget4(TextInput):
... class Media: ... class Media:
... css = {'all': ('/path/to/css1', '/path/to/css1')}
... js = ('/path/to/js1', '/path/to/js1') ... js = ('/path/to/js1', '/path/to/js1')
>>> w4 = MyWidget4() >>> w4 = MyWidget4()
>>> print w4.media >>> print w4.media
<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="/path/to/js1"></script>