import datetime import logging from django import template from django.core.urlresolvers import resolve, reverse from django.utils.safestring import mark_safe from django.utils.translation import activate, get_language, ugettext_lazy as _ from hosting.models import GenericProduct from utils.hosting_utils import get_ip_addresses logger = logging.getLogger(__name__) 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") @register.filter('get_line_item_from_stripe_invoice') def get_line_item_from_stripe_invoice(invoice): """ Returns ready-to-use "html" line item to be shown for an invoice in the invoice list page :param invoice: the stripe Invoice object :return: """ start_date = 0 end_date = 0 is_first = True vm_id = -1 plan_name = "" for line_data in invoice["lines"]["data"]: if is_first: plan_name = line_data.plan.name start_date = line_data.period.start end_date = line_data.period.end is_first = False if hasattr(line_data.metadata, "VM_ID"): vm_id = line_data.metadata.VM_ID else: if line_data.period.start < start_date: start_date = line_data.period.start if line_data.period.end > end_date: end_date = line_data.period.end if hasattr(line_data.metadata, "VM_ID"): vm_id = line_data.metadata.VM_ID try: vm_id = int(vm_id) except ValueError as ve: print(str(ve)) if invoice["lines"]["data"]: return mark_safe("""