summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bennett <ubernostrum@gmail.com>2010-03-03 08:17:51 +0000
committerJames Bennett <ubernostrum@gmail.com>2010-03-03 08:17:51 +0000
commit6edcd11aedc1dca4d67fdbe7478d40406dc88730 (patch)
treee39a3839c06d3876f6e4fb2b719489c956e0d618
parent9a82ca0a36798d0ca33353cd933cdbc8da0f677b (diff)
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
-rw-r--r--django/forms/widgets.py4
-rw-r--r--tests/regressiontests/forms/media.py8
2 files changed, 8 insertions, 4 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 482c718118..81db2a24f3 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -82,7 +82,9 @@ class Media(StrAndUnicode):
def add_css(self, data):
if data:
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):
combined = Media()
diff --git a/tests/regressiontests/forms/media.py b/tests/regressiontests/forms/media.py
index f47875db34..d715fb4d80 100644
--- a/tests/regressiontests/forms/media.py
+++ b/tests/regressiontests/forms/media.py
@@ -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="https://secure.other.com/path/to/js3"></script>
-# Regression check for #12879: specifying the same JS file multiple
-# times in a single Media instance should result in that file only
-# being included once.
+# Regression check for #12879: specifying the same CSS or JS file
+# multiple times in a single Media instance should result in that file
+# only being included once.
>>> class MyWidget4(TextInput):
... class Media:
+... css = {'all': ('/path/to/css1', '/path/to/css1')}
... js = ('/path/to/js1', '/path/to/js1')
>>> w4 = MyWidget4()
>>> print w4.media
+<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/path/to/js1"></script>