From ccdbb35df2d71e0cdcce96ac514cffb213776300 Mon Sep 17 00:00:00 2001 From: Ben Beecher Date: Thu, 4 Jun 2015 17:31:26 -0400 Subject: [PATCH 1/8] fix for 1.7 static assets --- djangojs/runners.py | 3 ++- djangojs/tests/test_tap.py | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/djangojs/runners.py b/djangojs/runners.py index d0ce2c5..af107c9 100644 --- a/djangojs/runners.py +++ b/djangojs/runners.py @@ -17,6 +17,7 @@ from django.core.urlresolvers import reverse from django.template.loader import render_to_string from django.test import LiveServerTestCase +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.utils.encoding import python_2_unicode_compatible from djangojs.tap import TapParser @@ -175,7 +176,7 @@ def cleanup(self): pass -class JsTestCase(PhantomJsRunner, LiveServerTestCase): +class JsTestCase(PhantomJsRunner, StaticLiveServerTestCase): ''' A PhantomJS suite that run against the Django LiveServerTestCase ''' diff --git a/djangojs/tests/test_tap.py b/djangojs/tests/test_tap.py index 9dc3ec0..28f9ae8 100644 --- a/djangojs/tests/test_tap.py +++ b/djangojs/tests/test_tap.py @@ -130,7 +130,6 @@ def test_parse_module(self): class TapParserTest(unittest.TestCase): def test_single_test(self): '''Should parse a test and its children''' - # import ipdb; ipdb.set_trace() parser = TapParser(TapAssertion) output = ''' # test: should be defined From db1fa94d8354fbb0cb9c625fe11cc63bebc47901 Mon Sep 17 00:00:00 2001 From: ellmetha Date: Mon, 22 Sep 2014 23:30:05 +0200 Subject: [PATCH 2/8] The javascript catalog is now cached --- djangojs/urls.py | 4 ++-- djangojs/views.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/djangojs/urls.py b/djangojs/urls.py index 32d0a71..60bf42f 100644 --- a/djangojs/urls.py +++ b/djangojs/urls.py @@ -6,7 +6,7 @@ from django.conf.urls import patterns, url from djangojs.conf import settings -from djangojs.views import UrlsJsonView, ContextJsonView, JsInitView +from djangojs.views import UrlsJsonView, ContextJsonView, JsInitView, cached_javascript_catalog def js_info_dict(): @@ -33,5 +33,5 @@ def js_info_dict(): url(r'^init\.js$', JsInitView.as_view(), name='django_js_init'), url(r'^urls$', UrlsJsonView.as_view(), name='django_js_urls'), url(r'^context$', ContextJsonView.as_view(), name='django_js_context'), - url(r'^translation$', 'django.views.i18n.javascript_catalog', js_info_dict(), name='js_catalog'), + url(r'^translation$', cached_javascript_catalog, js_info_dict(), name='js_catalog'), ) diff --git a/djangojs/views.py b/djangojs/views.py index 713d8b3..1a6ac05 100644 --- a/djangojs/views.py +++ b/djangojs/views.py @@ -12,6 +12,7 @@ from django.utils.cache import patch_vary_headers from django.views.decorators.cache import cache_page from django.views.generic import View, TemplateView +from django.views.i18n import javascript_catalog from djangojs.conf import settings from djangojs.urls_serializer import urls_as_dict, urls_as_json @@ -150,3 +151,8 @@ def get_context_data(self, **kwargs): context = super(QUnitView, self).get_context_data(**kwargs) context['css_theme'] = 'js/test/libs/%s.css' % self.theme return context + + +@cache_page(60 * settings.JS_CACHE_DURATION) +def cached_javascript_catalog(request, domain='djangojs', packages=None): + return javascript_catalog(request, domain, packages) From e0f402f1ef96760a11042dde362a20bd81a45759 Mon Sep 17 00:00:00 2001 From: ellmetha Date: Mon, 1 Jun 2015 16:17:17 +0200 Subject: [PATCH 3/8] Monkey patch for Django 1.8 --- djangojs/context_serializer.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/djangojs/context_serializer.py b/djangojs/context_serializer.py index 0c34c32..a7ed7b6 100644 --- a/djangojs/context_serializer.py +++ b/djangojs/context_serializer.py @@ -4,6 +4,7 @@ import json import logging +from django.conf import settings from django.template.context import RequestContext from django.utils import translation, six @@ -54,6 +55,13 @@ def as_dict(self): data[key] = value if settings.JS_USER_ENABLED: self.handle_user(data) + # Monkey patch for https://github.com/noirbizarre/django.js/issues/53 + data.update({ + 'STATIC_URL': settings.STATIC_URL, + 'MEDIA_URL': settings.MEDIA_URL, + 'LANGUAGES': settings.LANGUAGES, + 'LANGUAGE_CODE': settings.LANGUAGE_CODE, + }) return data def as_json(self): From 49b745bb4f8086d464111a83cee0a588b9ef5a85 Mon Sep 17 00:00:00 2001 From: Colin Wirz Date: Thu, 8 Jan 2015 21:38:50 +0100 Subject: [PATCH 4/8] Allow multiple urlcofs for url-listing --- djangojs/conf.py | 1 + djangojs/urls_serializer.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/djangojs/conf.py b/djangojs/conf.py index b2b43ca..e9423bc 100644 --- a/djangojs/conf.py +++ b/djangojs/conf.py @@ -17,6 +17,7 @@ 'JS_USER_ENABLED': True, 'JS_URLS': None, 'JS_URLS_EXCLUDE': None, + 'JS_URL_CONFS': _settings.ROOT_URLCONF, 'JS_URLS_NAMESPACES': None, 'JS_URLS_NAMESPACES_EXCLUDE': None, 'JS_URLS_UNNAMED': False, diff --git a/djangojs/urls_serializer.py b/djangojs/urls_serializer.py index f57452f..8be8f27 100644 --- a/djangojs/urls_serializer.py +++ b/djangojs/urls_serializer.py @@ -39,8 +39,18 @@ def urls_as_dict(): ''' Get the URLs mapping as a dictionnary ''' - module = settings.ROOT_URLCONF - return _get_urls(module) if settings.JS_URLS_ENABLED else {} + module = settings.JS_URL_CONFS + urls = {} + if settings.JS_URLS_ENABLED: + if isinstance(module, (six.text_type, six.string_types)): + _get_urls(module) + else: + for item in module: + urls = dict(urls.items() + _get_urls(item).items()) + else: + return {} + + return urls def urls_as_json(): From 45ffad8bbc141d34ddc22b42414f1cebfea81611 Mon Sep 17 00:00:00 2001 From: Ben Beecher Date: Thu, 4 Jun 2015 18:07:56 -0400 Subject: [PATCH 5/8] removing depricated phantom.args call for system.args call --- djangojs/phantomjs/qunit-runner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangojs/phantomjs/qunit-runner.js b/djangojs/phantomjs/qunit-runner.js index 86ec9d3..256d0ac 100644 --- a/djangojs/phantomjs/qunit-runner.js +++ b/djangojs/phantomjs/qunit-runner.js @@ -53,7 +53,7 @@ page.onConsoleMessage = function(msg) { console.log(msg); }; -page.open(phantom.args[0], function(status){ +page.open(system.args[1], function(status){ if (status !== "success") { console.log("Unable to access network"); phantom.exit(1); From 2135137d548462e7d0f4a975c57c5a9b7a482521 Mon Sep 17 00:00:00 2001 From: Ben Beecher Date: Wed, 23 Dec 2015 23:12:21 -0500 Subject: [PATCH 6/8] fix for 1.9 --- djangojs/runners.py | 5 ++++- djangojs/templates/djangojs/django_js_init.html | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/djangojs/runners.py b/djangojs/runners.py index af107c9..f850a16 100644 --- a/djangojs/runners.py +++ b/djangojs/runners.py @@ -23,7 +23,10 @@ from djangojs.tap import TapParser from djangojs.utils import StorageGlobber -from django.utils.unittest import TestCase +try: + from django.utils.unittest import TestCase +except ImportError: + from django.test.testcases import TestCase #: Console output line length for separators LINE_SIZE = 70 diff --git a/djangojs/templates/djangojs/django_js_init.html b/djangojs/templates/djangojs/django_js_init.html index eeffb7c..fa07439 100644 --- a/djangojs/templates/djangojs/django_js_init.html +++ b/djangojs/templates/djangojs/django_js_init.html @@ -1,5 +1,4 @@ {% load js %} -{% load url from future %} {% if js.i18n %} From 24a9a41bf6aa7f454c4977b79059209434759b11 Mon Sep 17 00:00:00 2001 From: Ben Beecher Date: Thu, 24 Dec 2015 00:08:58 -0500 Subject: [PATCH 7/8] make sure tags are safe --- djangojs/templatetags/js.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/djangojs/templatetags/js.py b/djangojs/templatetags/js.py index 6c6b7f5..72401ee 100644 --- a/djangojs/templatetags/js.py +++ b/djangojs/templatetags/js.py @@ -7,6 +7,7 @@ from django import template from django.contrib.staticfiles.storage import staticfiles_storage from django.utils import six +from django.utils.safestring import mark_safe from djangojs import JQUERY_MIGRATE_VERSION from djangojs.conf import settings @@ -112,9 +113,9 @@ def javascript(filename, type='text/javascript'): '''A simple shortcut to render a ``script`` tag to a static javascript file''' if '?' in filename and len(filename.split('?')) is 2: filename, params = filename.split('?') - return '' % (type, staticfiles_storage.url(filename), params) + return mark_safe('' % (type, staticfiles_storage.url(filename), params)) else: - return '' % (type, staticfiles_storage.url(filename)) + return mark_safe('' % (type, staticfiles_storage.url(filename))) @register.simple_tag @@ -138,7 +139,7 @@ def coffee(filename): @register.simple_tag def css(filename): '''A simple shortcut to render a ``link`` tag to a static CSS file''' - return '' % staticfiles_storage.url(filename) + return mark_safe('' % staticfiles_storage.url(filename)) def _boolean(value): From c6c8bae376d9216f88ffba839f54adf2d2d83bc6 Mon Sep 17 00:00:00 2001 From: Eric Brelsford Date: Thu, 21 Jan 2016 12:19:29 -0500 Subject: [PATCH 8/8] Actually return urls in _get_urls --- djangojs/urls_serializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangojs/urls_serializer.py b/djangojs/urls_serializer.py index 8be8f27..be9d9d2 100644 --- a/djangojs/urls_serializer.py +++ b/djangojs/urls_serializer.py @@ -43,7 +43,7 @@ def urls_as_dict(): urls = {} if settings.JS_URLS_ENABLED: if isinstance(module, (six.text_type, six.string_types)): - _get_urls(module) + urls = _get_urls(module) else: for item in module: urls = dict(urls.items() + _get_urls(item).items())