You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

61 lines
1.9 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from markupsafe import Markup
from .models import Currency as CurrencyModel
MAIN_CURRENCY_ID = 1
DEFAULT_SYMBOL = '₸' # Тенге
DEFAULT_SHORT = 'тг'
class Currency(object):
id = ''
exchange = ''
symbol = ''
short = ''
def __init__(self, request):
self.id = request.session.get('currency_id', None)
if self.id:
try:
_currency = CurrencyModel.objects.get(pk=self.id)
self.exchange = _currency.exchange
self.symbol = _currency.HTML_letter_code
self.short = _currency.abridgement
except CurrencyModel.DoesNotExist:
_currency = CurrencyModel.objects.get(pk=MAIN_CURRENCY_ID)
self.exchange = _currency.exchange
self.symbol = _currency.HTML_letter_code
self.short = DEFAULT_SHORT
else:
self.id = MAIN_CURRENCY_ID
self.symbol = DEFAULT_SYMBOL
self.exchange = 1
request.session['currency_id'] = MAIN_CURRENCY_ID
def set_currency(self, c_id, request):
self.id = c_id
try:
_currency = CurrencyModel.objects.get(pk=self.id)
self.symbol = _currency.HTML_letter_code
self.short = _currency.abridgement
self.exchange = _currency.exchange
except CurrencyModel.DoesNotExist:
self.symbol = DEFAULT_SYMBOL
request.session['currency_id'] = c_id
def get_symbol(self):
return Markup(self.symbol)
def get_short_currency_name(self):
return self.short
def get_price(self, price):
_price = int(price * self.exchange)
return _price
def get_string_price(self, price):
return Markup('{price} <span class="price__currency">{code}</span>'.
format(price=self.get_price(price), code=self.symbol))