diff --git a/batiskaf/jinja2.py b/batiskaf/jinja2.py
index 4d9717b..91ee1ec 100644
--- a/batiskaf/jinja2.py
+++ b/batiskaf/jinja2.py
@@ -16,7 +16,7 @@ def environment(**options):
'url': reverse,
'main_categories': Category.objects.filter(parent__isnull=True).order_by('pk'),
'all_brands': Brand.objects.order_by('title'),
- 'all_currency': Currency.objects.all(),
+ 'currencies': Currency.objects.all(),
})
env.filters['linebreaks'] = linebreaks
env.filters['thumbnail'] = thumbnail
diff --git a/batiskaf/templates/jinja2/base.jinja b/batiskaf/templates/jinja2/base.jinja
index e51b8f7..8711988 100644
--- a/batiskaf/templates/jinja2/base.jinja
+++ b/batiskaf/templates/jinja2/base.jinja
@@ -146,14 +146,14 @@
-
- Валюта ₸ ₽ $
-
- {{ product.min_price(request.user) }} ₸
-
+ {{ (request|currency).get_price(product.min_price(request.user)) }}
{% if product.in_stock() %}
diff --git a/batiskaf/urls.py b/batiskaf/urls.py
index 42713d2..227cbf2 100644
--- a/batiskaf/urls.py
+++ b/batiskaf/urls.py
@@ -4,7 +4,7 @@ from django.http import HttpResponse
from api.views import call_order
from news.views import NewsSitemap
from promo.views import PromoSitemap
-from store.views import order_view, order_print, ProductSitemap, CategorySitemap, order_kkb, kkb_result
+from store.views import order_view, order_print, ProductSitemap, CategorySitemap, order_kkb, kkb_result, set_currency
from main.views import *
from rest_framework import routers
# from api.urls import router
@@ -124,5 +124,6 @@ urlpatterns = (
url(r'^faq/$', faq, name='faq'),
url(r'^fest/$', fest, name='fest'),
url(r'^fest_success/$', fest_success, name='fest_success'),
+ url(r'^currencies/(?P.+)/$', set_currency, name='set_currency'),
url(r'^admin2517_garpun/', include(admin.site.urls)),
)
diff --git a/static/less/components/_navbar.less b/static/less/components/_navbar.less
index 9551448..045953a 100644
--- a/static/less/components/_navbar.less
+++ b/static/less/components/_navbar.less
@@ -5,10 +5,6 @@
background: @brand-roballen;
}
-.open .navbar-item__currency {
- //color: #fed000 !important;
-}
-
.navbar-item__currency {
float: left;
height: 50px;
diff --git a/store/currency.py b/store/currency.py
index c9509d5..593f1c0 100644
--- a/store/currency.py
+++ b/store/currency.py
@@ -1,20 +1,48 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
+from markupsafe import Markup
from .models import Currency as CurrencyModel
-MAIN_CURRENCY_ID = '1'
+MAIN_CURRENCY_ID = 1
+DEFAULT_SYMBOL = '₸' # Тенге
class Currency(object):
- currency_id = ''
+ id = ''
+ exchange = ''
+ symbol = ''
def __init__(self, request):
- self.cart_id = request.session.get('currency_id', None)
- if not self.currency_id:
- self.currency_id = MAIN_CURRENCY_ID
+ 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
+ except CurrencyModel.DoesNotExist:
+ pass
+
+ 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.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_price(self, price):
+ _price = int(price * self.exchange)
+ return Markup('{price} {code}'.format(price=_price, code=self.symbol))
diff --git a/store/views.py b/store/views.py
index 00e8b4e..92a0387 100644
--- a/store/views.py
+++ b/store/views.py
@@ -12,6 +12,7 @@ from main.models import ProductsUpdate
from .models import *
from store.alemtat import AlemTat
from store.cart import Cart, CartItem
+from store.currency import Currency as _Currency
from django.contrib import messages
from store.forms import OrderForm, ProductFeedbackForm
from django.http import JsonResponse
@@ -469,3 +470,15 @@ class CategorySitemap(Sitemap):
def items(self):
return Category.objects.all()
+
+
+def set_currency(request, currency_code):
+ current_url = request.META.get('HTTP_REFERER', '/')
+ _currency = _Currency(request)
+ try:
+ current_currency = Currency.objects.get(ISO_letter_code=currency_code)
+ except Currency.DoesNotExist:
+ current_currency = Currency.objects.get(pk=1)
+ _currency.set_currency(current_currency.id, request)
+
+ return redirect(current_url)