X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/f17e66aa4210a226669dd96e26295d6f58b94703..43116c58e5c56f94ef358a5a17fb13a252e02531:/apps/filebrowser/templatetags/fb_tags.py diff --git a/apps/filebrowser/templatetags/fb_tags.py b/apps/filebrowser/templatetags/fb_tags.py deleted file mode 100644 index 5bc9b401..00000000 --- a/apps/filebrowser/templatetags/fb_tags.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -from django import template -from django.utils.encoding import smart_unicode -from django.utils.safestring import mark_safe - -from filebrowser.fb_settings import SELECT_FORMATS - -register = template.Library() - - -@register.inclusion_tag('filebrowser/include/_response.html', takes_context=True) -def query_string(context, add=None, remove=None): - """ - Allows the addition and removal of query string parameters. - - _response.html is just {{ response }} - - Usage: - http://www.url.com/{% query_string "param_to_add=value, param_to_add=value" "param_to_remove, params_to_remove" %} - http://www.url.com/{% query_string "" "filter" %}filter={{new_filter}} - http://www.url.com/{% query_string "sort=value" "sort" %} - """ - # Written as an inclusion tag to simplify getting the context. - add = string_to_dict(add) - remove = string_to_list(remove) - params = context['query'].copy() - response = get_query_string(params, add, remove) - return {'response': smart_unicode(response)} - - -def query_helper(query, add=None, remove=None): - """ - Helper Function for use within views. - """ - add = string_to_dict(add) - remove = string_to_list(remove) - params = query.copy() - return get_query_string(params, add, remove) - - -def get_query_string(p, new_params=None, remove=None): - """ - Add and remove query parameters. From `django.contrib.admin`. - """ - if new_params is None: - new_params = {} - - if remove is None: - remove = [] - - for r in remove: - for k in p.keys(): - if k.startswith(r): - del p[k] - for k, v in new_params.items(): - if k in p and v is None: - del p[k] - elif v is not None: - p[k] = v - return mark_safe('?' + '&'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')) - - -def string_to_dict(string): - """ - Usage:: - - {{ url|thumbnail:"width=10,height=20" }} - {{ url|thumbnail:"width=10" }} - {{ url|thumbnail:"height=20" }} - """ - kwargs = {} - - if string: - string = str(string) - - args = (arg.strip() for arg in string.split(',') if not arg.isspace()) - kwargs.update(arg.split('=', 1) for arg in args) - - return kwargs - - -def string_to_list(string): - """ - Usage:: - - {{ url|thumbnail:"width,height" }} - """ - args = [] - if string: - string = str(string) - if ',' not in string: - # ensure at least one ',' - string += ',' - for arg in string.split(','): - arg = arg.strip() - if arg == '': - continue - args.append(arg) - return args - - -class SelectableNode(template.Node): - def __init__(self, filetype, format): - self.filetype = template.Variable(filetype) - self.format = template.Variable(format) - - def render(self, context): - try: - filetype = self.filetype.resolve(context) - except template.VariableDoesNotExist: - filetype = '' - try: - format = self.format.resolve(context) - except template.VariableDoesNotExist: - format = '' - if filetype and format and filetype in SELECT_FORMATS[format]: - selectable = True - elif filetype and format and filetype not in SELECT_FORMATS[format]: - selectable = False - else: - selectable = True - context['selectable'] = selectable - return '' - - -def selectable(parser, token): - - try: - tag, filetype, format = token.split_contents() - except: - raise TemplateSyntaxError("%s tag requires 2 arguments" % token.contents.split()[0]) - - return SelectableNode(filetype, format) - -register.tag(selectable)