From e55676e657c466a64ebbdcd122eb0bd2a25ddb0c Mon Sep 17 00:00:00 2001
From: Erik Simmler <tgecho@gmail.com>
Date: Thu, 8 Mar 2012 12:50:48 -0500
Subject: [PATCH] Change CachedFilesMixin url_converter to output relative
 paths

---
 django/contrib/staticfiles/storage.py |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py
index fe35a31..93bfe40 100644
--- a/django/contrib/staticfiles/storage.py
+++ b/django/contrib/staticfiles/storage.py
@@ -165,9 +165,11 @@ class CachedFilesMixin(object):
                     start, end = 1, sub_level - 1
             joined_result = '/'.join(name_parts[:-start] + url_parts[end:])
             hashed_url = self.url(unquote(joined_result), force=True)
+            file_name = hashed_url.split('/')[-1:]
+            relative_url = '/'.join(url.split('/')[:-1] + file_name)
 
             # Return the hashed and normalized version to the file
-            return 'url("%s")' % unquote(hashed_url)
+            return 'url("%s")' % unquote(relative_url)
         return converter
 
     def post_process(self, paths, dry_run=False, **options):
-- 
1.7.6

From 6608fbeac561ff4d664ddcf20eead2bf7828568a Mon Sep 17 00:00:00 2001
From: Erik Simmler <tgecho@gmail.com>
Date: Thu, 8 Mar 2012 13:30:02 -0500
Subject: [PATCH] Updated tests to reflect relative url converting

---
 tests/regressiontests/staticfiles_tests/tests.py |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/tests/regressiontests/staticfiles_tests/tests.py b/tests/regressiontests/staticfiles_tests/tests.py
index fc489b3..d09cf6c 100644
--- a/tests/regressiontests/staticfiles_tests/tests.py
+++ b/tests/regressiontests/staticfiles_tests/tests.py
@@ -383,7 +383,7 @@ class TestCollectionCachedStorage(BaseCollectionTestCase,
         with storage.staticfiles_storage.open(relpath) as relfile:
             content = relfile.read()
             self.assertNotIn("cached/other.css", content)
-            self.assertIn("/static/cached/other.d41d8cd98f00.css", content)
+            self.assertIn("other.d41d8cd98f00.css", content)
 
     def test_path_with_querystring(self):
         relpath = self.cached_file_path("cached/styles.css?spam=eggs")
@@ -393,7 +393,7 @@ class TestCollectionCachedStorage(BaseCollectionTestCase,
                 "cached/styles.93b1147e8552.css") as relfile:
             content = relfile.read()
             self.assertNotIn("cached/other.css", content)
-            self.assertIn("/static/cached/other.d41d8cd98f00.css", content)
+            self.assertIn("other.d41d8cd98f00.css", content)
 
     def test_path_with_fragment(self):
         relpath = self.cached_file_path("cached/styles.css#eggs")
@@ -402,15 +402,15 @@ class TestCollectionCachedStorage(BaseCollectionTestCase,
                 "cached/styles.93b1147e8552.css") as relfile:
             content = relfile.read()
             self.assertNotIn("cached/other.css", content)
-            self.assertIn("/static/cached/other.d41d8cd98f00.css", content)
+            self.assertIn("other.d41d8cd98f00.css", content)
 
     def test_path_with_querystring_and_fragment(self):
         relpath = self.cached_file_path("cached/css/fragments.css")
         self.assertEqual(relpath, "cached/css/fragments.75433540b096.css")
         with storage.staticfiles_storage.open(relpath) as relfile:
             content = relfile.read()
-            self.assertIn('/static/cached/css/fonts/font.a4b0478549d0.eot?#iefix', content)
-            self.assertIn('/static/cached/css/fonts/font.b8d603e42714.svg#webfontIyfZbseF', content)
+            self.assertIn('fonts/font.a4b0478549d0.eot?#iefix', content)
+            self.assertIn('fonts/font.b8d603e42714.svg#webfontIyfZbseF', content)
             self.assertIn('data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAA', content)
             self.assertIn('#default#VML', content)
 
@@ -429,19 +429,18 @@ class TestCollectionCachedStorage(BaseCollectionTestCase,
         with storage.staticfiles_storage.open(relpath) as relfile:
             content = relfile.read()
             self.assertNotIn("..//cached///styles.css", content)
-            self.assertIn("/static/cached/styles.93b1147e8552.css", content)
+            self.assertIn("../cached/styles.93b1147e8552.css", content)
 
     def test_template_tag_relative(self):
         relpath = self.cached_file_path("cached/relative.css")
         self.assertEqual(relpath, "cached/relative.2217ea7273c2.css")
         with storage.staticfiles_storage.open(relpath) as relfile:
             content = relfile.read()
-            self.assertIn("/static/cached/styles.93b1147e8552.css", content)
             self.assertNotIn("../cached/styles.css", content)
             self.assertNotIn('@import "styles.css"', content)
             self.assertNotIn('url(img/relative.png)', content)
-            self.assertIn('url("/static/cached/img/relative.acae32e4532b.png")', content)
-            self.assertIn("/static/cached/styles.93b1147e8552.css", content)
+            self.assertIn('url("img/relative.acae32e4532b.png")', content)
+            self.assertIn("../cached/styles.93b1147e8552.css", content)
 
     def test_template_tag_deep_relative(self):
         relpath = self.cached_file_path("cached/css/window.css")
@@ -449,7 +448,7 @@ class TestCollectionCachedStorage(BaseCollectionTestCase,
         with storage.staticfiles_storage.open(relpath) as relfile:
             content = relfile.read()
             self.assertNotIn('url(img/window.png)', content)
-            self.assertIn('url("/static/cached/css/img/window.acae32e4532b.png")', content)
+            self.assertIn('url("img/window.acae32e4532b.png")', content)
 
     def test_template_tag_url(self):
         relpath = self.cached_file_path("cached/url.css")
-- 
1.7.6

From 0e9f7849f45d37531dd05223feefc5776557d580 Mon Sep 17 00:00:00 2001
From: Erik Simmler <tgecho@gmail.com>
Date: Thu, 8 Mar 2012 13:30:21 -0500
Subject: [PATCH] Updated comment to reflect new reality

---
 django/contrib/staticfiles/storage.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py
index 93bfe40..dc5f52d 100644
--- a/django/contrib/staticfiles/storage.py
+++ b/django/contrib/staticfiles/storage.py
@@ -168,7 +168,7 @@ class CachedFilesMixin(object):
             file_name = hashed_url.split('/')[-1:]
             relative_url = '/'.join(url.split('/')[:-1] + file_name)
 
-            # Return the hashed and normalized version to the file
+            # Return the hashed version to the file
             return 'url("%s")' % unquote(relative_url)
         return converter
 
-- 
1.7.6

From c96b3e8a973d2f1e0cc79efef86b08beda8b90c9 Mon Sep 17 00:00:00 2001
From: Erik Simmler <tgecho@gmail.com>
Date: Thu, 8 Mar 2012 13:30:29 -0500
Subject: [PATCH] Updated docs to reflect relative url converting

---
 docs/ref/contrib/staticfiles.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/docs/ref/contrib/staticfiles.txt b/docs/ref/contrib/staticfiles.txt
index 368154c..1dbd00b 100644
--- a/docs/ref/contrib/staticfiles.txt
+++ b/docs/ref/contrib/staticfiles.txt
@@ -327,7 +327,7 @@ CachedStaticFilesStorage
 
     .. code-block:: css+django
 
-        @import url("/static/admin/css/base.27e20196a850.css");
+        @import url("../admin/css/base.27e20196a850.css");
 
     To enable the ``CachedStaticFilesStorage`` you have to make sure the
     following requirements are met:
-- 
1.7.6

