Skip to content
Snippets Groups Projects
Commit 3bc21e1b authored by Vladimir Iakovlev's avatar Vladimir Iakovlev
Browse files

Merge pull request #57 from tjwalch/master

Template tags to add bower installed files automatically.
parents 974a44ce f4fb2af4
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
import os.path
import json
import six
from django.conf import settings
from django.utils.datastructures import OrderedSet
def read_mains():
for component in settings.BOWER_INSTALLED_APPS:
try:
with open(os.path.join(
settings.BOWER_COMPONENTS_ROOT,
'bower_components',
component,
'bower.json')) as bower_json:
main = json.load(bower_json).get('main')
if isinstance(main, six.string_types):
yield '%s/%s' % (component, main)
elif isinstance(main, list):
for m in main:
yield '%s/%s' % (component, m)
except FileNotFoundError:
continue
def bower_components(request):
return {
'bower_components': OrderedSet([main for main in read_mains()]),
}
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os.path
from django import template
from django.templatetags import static
register = template.Library()
style_template = template.Template(
"""{% for filename in files %}
<link href="{{filename}}" rel="stylesheet" type="text/css">
{% endfor %}"""
)
script_template = template.Template(
"""{% for filename in files %}
<script src="{{filename}}" type="text/javascript"></script>
{% endfor %}"""
)
def tags(context, args, type):
components = (
[arg for arg in args if arg in context['bower_components']]
if args else context['bower_components']
)
files = []
for component in components:
files.append(component)
context['bower_components'].remove(component)
return {'files': [
static.static(f)
for f in files
if os.path.splitext(f)[1][1:] == type
]}
@register.inclusion_tag(style_template, takes_context=True)
def bower_styles(context, *args):
return tags(context, args, 'css')
@register.inclusion_tag(script_template, takes_context=True)
def bower_scripts(context, *args):
return tags(context, args, 'js')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment