Beispiel #1
0
 def test_should_include_revision_identifier_for_js_resource_filename(self):
     identifier = generate_resource_version_identifier()
     self.assertEqual(
         'cubane.testapp.%s.min.js' % identifier,
         get_minified_filename('testapp', 'js', identifier=identifier))
Beispiel #2
0
 def test_with_media_for_js_should_ignore_media(self):
     self.assertEqual(
         'cubane.testapp.min.js',
         get_minified_filename('testapp', 'js', css_media='print'))
Beispiel #3
0
 def test_default_media_for_css_should_be_screen(self):
     self.assertEqual(
         'cubane.testapp.screen.min.css',
         get_minified_filename('testapp', 'css', css_media=None))
Beispiel #4
0
 def test_with_media_for_css(self):
     self.assertEqual(
         'cubane.testapp.print.min.css',
         get_minified_filename('testapp', 'css', css_media='print'))
Beispiel #5
0
    def render(self, context):
        """
        Render resource tag.
        """
        target = value_or_literal(self.target, context)
        css_media = value_or_literal(self.css_media, context)

        # async
        if self.is_async is not None:
            is_async = value_or_literal(self.is_async, context)
        elif self.ext == 'js':
            is_async = True
        else:
            is_async = False

        # additonal_data
        if self.additional_data is not None:
            additional_data = value_or_literal(self.additional_data, context)
        else:
            additional_data = None

        if css_media and css_media not in settings.CSS_MEDIA:
            raise template.TemplateSyntaxError(
                ("'resources' only accepts the following values for css_media argument: " +
                 "%s."
                ) % settings.CSS_MEDIA
            )

        # if target is not defined, just ignore it.
        if target not in get_resource_target_definition():
            return ''

        if self.inline:
            if not settings.MINIFY_RESOURCES:
                resources = get_resources(target, self.ext)
                content = '\n'.join([get_resource(url) for url in resources])
            else:
                content = get_resource(
                    get_minified_filename(
                        target,
                        self.ext,
                        'screen' if self.ext == 'css' else None,
                        self.get_identifier()
                    )
                )

            return self.inline_include(content, additional_data, css_media)
        else:
            if not settings.MINIFY_RESOURCES:
                resources = get_resources(target, self.ext, css_media)
                return ''.join([
                    self.include(url, css_media, is_async, additional_data) for url in resources
                ])
            else:
                return self.include(
                    get_minified_filename(
                        target,
                        self.ext,
                        css_media,
                        self.get_identifier()
                    ), css_media, is_async, additional_data
                )