from django import template
from django.core.urlresolvers import resolve, reverse
from django.utils.translation import activate, get_language

register = template.Library()


@register.simple_tag(takes_context=True)
def change_lang(context, lang=None, *args, **kwargs):

    path = context['request'].path
    url_parts = resolve(path)

    url = path
    cur_language = get_language()
    try:
        activate(lang)
        url = reverse(url_parts.view_name, kwargs=url_parts.kwargs)
    finally:
        activate(cur_language)

    return "%s" % url


@register.filter('get_value_from_dict')
def get_value_from_dict(dict_data, key):
    """
    usage example {{ your_dict|get_value_from_dict:your_key }}
    """
    if key:
        return dict_data.get(key)
    else:
        return ""


@register.filter('multiply')
def multiply(value, arg):
    """
    usage: {{ quantity|multiply:price }}
    :param value:
    :param arg:
    :return:
    """
    return value * arg


@register.filter('escaped_line_break')
def escaped_line_break(value):
    """
    usage: {{ text|escaped_line_break }}
    :param value:
    :return:
    """
    return value.replace("\\n", "\n")
