Skip to content

Commit

Permalink
Merge pull request #7 from WimpyAnalytics/staticfix
Browse files Browse the repository at this point in the history
Staticfix
  • Loading branch information
carljm committed Jan 19, 2015
2 parents eef475e + 4cf70f6 commit 7fe0571
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 15 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ HGREV
.pydevproject
.tox/
Django-*.egg
.idea
1 change: 1 addition & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Aram Dulyan
Berker Peksag <berker.peksag@gmail.com>
Carl Meyer <carl@oddbird.net>
Fursov Sergey <GeyseR85@gmail.com>
Ivan Ven Osdel <ivan@wimpyanalytics.com>
James Turk <james.p.turk@gmail.com>
Jannis Leidel <jannis@enn.io>
Jeremy Carbaugh
Expand Down
3 changes: 3 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ CHANGES
tip (unreleased)
----------------

* Template tags now support Django's STATICFILES_STORAGE setting.
Thanks Ivan Ven Osdel for report and fix.

2.2.2 (2014.09.08)
------------------

Expand Down
12 changes: 3 additions & 9 deletions markitup/util.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
from __future__ import unicode_literals

import posixpath
from django.contrib.staticfiles.storage import staticfiles_storage

from django.conf import settings as django_settings

from markitup import settings


def absolute_url(path, prefix=None):
if prefix is None:
prefix = django_settings.STATIC_URL
def absolute_url(path):
if path.startswith(u'http://') or path.startswith(u'https://') or path.startswith(u'/'):
return path
return posixpath.join(prefix, path)
return staticfiles_storage.url(path)
8 changes: 8 additions & 0 deletions tests/test_storage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import posixpath

from django.contrib.staticfiles.storage import FileSystemStorage


class SomeCustomStorage(FileSystemStorage):
def url(self, name):
return posixpath.join('https://cdn.example.com/static', name)
33 changes: 27 additions & 6 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.test import TestCase, Client
from django.utils.safestring import mark_safe
from django.utils.unittest import skipUnless
from django.test.utils import override_settings

from django.contrib import admin

Expand Down Expand Up @@ -279,6 +280,14 @@ class TemplatetagMediaUrlTests(MIUTestCase):
maxDiff = None
prefix = '/static'

def setUp(self):
self._reset_storage()

def _reset_storage(self):
"""To re-apply any overridden storage settings"""
from django.contrib.staticfiles.storage import staticfiles_storage
staticfiles_storage._setup()

# helper abstractions so we can reuse same tests for widget and
# templatetag methods
def _reset_context(self):
Expand Down Expand Up @@ -306,6 +315,15 @@ def _get_js(self):
self._reset_context()
return self.render("{% load markitup_tags %}{% markitup_js %}")

def _get_expected_media(self):
out = """<link href="%(prefix)s/markitup/skins/simple/style.css" type="text/css" media="screen" rel="stylesheet" />
<link href="%(prefix)s/markitup/sets/default/style.css" type="text/css" media="screen" rel="stylesheet" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/ajax_csrf.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/jquery.markitup.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/sets/default/set.js"></script>""" % {'prefix': self.prefix}
return out

# JQUERY_URL settings and resulting link
jquery_urls = (
('jquery.min.js', '/static/jquery.min.js'),
Expand All @@ -331,12 +349,7 @@ def _get_js(self):
skin_urls = set_urls

def test_all_media(self):
out = """<link href="%(prefix)s/markitup/skins/simple/style.css" type="text/css" media="screen" rel="stylesheet" />
<link href="%(prefix)s/markitup/sets/default/style.css" type="text/css" media="screen" rel="stylesheet" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/ajax_csrf.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/jquery.markitup.js"></script>
<script type="text/javascript" src="%(prefix)s/markitup/sets/default/set.js"></script>""" % {'prefix': self.prefix}
out = self._get_expected_media()
self.assertHTMLEqual(self._get_media(), out)

def test_jquery_url(self):
Expand Down Expand Up @@ -380,6 +393,14 @@ def test_skin_via_settings(self):
finally:
settings.MARKITUP_SKIN = _old_miu_skin

@override_settings(STATICFILES_STORAGE='tests.test_storage.SomeCustomStorage')
def test_honor_staticfiles_storage(self):
"""Should not circumvent the user's STATICFILES_STORAGE setting"""
self._reset_storage()
self.prefix = 'https://cdn.example.com/static'
out = self._get_expected_media()
self.assertHTMLEqual(self._get_media(), out)


class WidgetMediaUrlTests(TemplatetagMediaUrlTests):
maxDiff = None
Expand Down

0 comments on commit 7fe0571

Please sign in to comment.