view sat_website/templatetags/utils.py @ 32:876ae5e23690

language selector doesn't display the language code and put the first letter un uppercase (even in French, normally no upper case but here it's the first word of a word group)
author souliane <souliane@mailoo.org>
date Tue, 27 Jan 2015 07:54:43 +0100
parents b45621706d83
children 9d553570cc61
line wrap: on
line source

from django import template
register = template.Library()

@register.filter
def is_tuple(value):
    """Tell if this value is a tuple or not.

    @param value (obj): any object
    @return: True if value is a tuple
    """
    # XXX: we would like to have is_type with an argument instead, but it would
    # rely on a strange comparison - isinstance(value, arg) doesn't work here
    return type(value) == tuple

@register.filter
def buffer(value, n):
    """Split values in sub-lists of n elements.

    @param value (list): a list object
    @return: a list containing sub-lists

    For example:

    >>> buffer(range(10), 2)
    [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]

    >>> buffer(range(10), 3)
    [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]

    >>> buffer(range(10), 4)
    [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]]
    """
    result = []
    index = 0
    while index < len(value):
        result.append(value[index:index + n])
        index += n
    return result