diff --git a/batiskaf/jinja2.py b/batiskaf/jinja2.py index dae2ef2..4d9717b 100644 --- a/batiskaf/jinja2.py +++ b/batiskaf/jinja2.py @@ -3,9 +3,10 @@ from django.contrib.staticfiles.storage import staticfiles_storage from django.core.urlresolvers import reverse from batiskaf.jinja2_ext.thumbnails import thumbnail from batiskaf.jinja2_ext.cart import cart +from batiskaf.jinja2_ext.currency import currency from batiskaf.jinja2_ext.html_filters import * from jinja2 import Environment -from store.models import Category, Brand +from store.models import Category, Brand, Currency def environment(**options): @@ -15,10 +16,12 @@ 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(), }) env.filters['linebreaks'] = linebreaks env.filters['thumbnail'] = thumbnail env.filters['cart'] = cart + env.filters['currency'] = currency env.filters['bootstrap'] = bootstrap env.filters['bootstrap_inline'] = bootstrap_inline env.filters['bootstrap_horizontal'] = bootstrap_horizontal diff --git a/batiskaf/jinja2_ext/currency.py b/batiskaf/jinja2_ext/currency.py new file mode 100644 index 0000000..bffee30 --- /dev/null +++ b/batiskaf/jinja2_ext/currency.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from store.currency import Currency + + +def currency(request): + return Currency(request) diff --git a/batiskaf/templates/jinja2/base.jinja b/batiskaf/templates/jinja2/base.jinja index ad190e1..e51b8f7 100644 --- a/batiskaf/templates/jinja2/base.jinja +++ b/batiskaf/templates/jinja2/base.jinja @@ -17,7 +17,7 @@ - + @@ -142,9 +142,23 @@ -
  • Акции -
  • +
  • Акции
  • + diff --git a/batiskaf/templates/jinja2/index.jinja b/batiskaf/templates/jinja2/index.jinja index ced1235..552744e 100644 --- a/batiskaf/templates/jinja2/index.jinja +++ b/batiskaf/templates/jinja2/index.jinja @@ -47,7 +47,11 @@
    + + Валюта ₸ ₽ $ + {{ product.min_price(request.user) }} ₸ +
    {% if product.in_stock() %}
    diff --git a/static/js/_.js b/static/js/_.js index a09f646..779d660 100644 --- a/static/js/_.js +++ b/static/js/_.js @@ -1,6 +1,11 @@ $(document).on('click', '.yamm .dropdown-menu', function (e) { e.stopPropagation(); }); + +$(document).on('click', '.navbar-item__currency', function (e) { + e.preventDefault(); +}); + $(document).ready(function () { $("#shop-categories").on('affix.bs.affix', function () { $('.header-middle').css('margin-bottom', $("#shop-categories").css('height')); diff --git a/static/less/_.css b/static/less/_.css index d97efe3..18c62ae 100644 --- a/static/less/_.css +++ b/static/less/_.css @@ -312,6 +312,58 @@ .navbar-item__roballen { background: #027BC1; } +.navbar-item__currency { + float: left; + height: 50px; + font-size: 14px!important; + width: 34px; +} +.navbar-item__currency:after { + clear: both; + display: table; + content: " "; +} +.open .currency-icon { + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +} +.currency-icon { + display: block; + margin-left: 0; + width: 49px; + text-align: center; + line-height: 50px; +} +.currency-menu { + width: 50px; + left: inherit!important; + margin: 0; + position: absolute; + float: left; + background-color: #434a54; + color: #fff; + border-width: 0 1px 1px; + border-radius: 0 0 2px 2px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} +.currency-menu .yamm-content { + padding: 10px; +} +.currency-item { + margin-bottom: 15px; + text-align: center; +} +.currency-item:last-child { + margin-bottom: 0; +} +.currency-item__link { + display: block; + padding: 0!important; + border: 0!important; + font-size: 14px!important; +} body { font-family: "Open Sans", Arial, sans-serif; } diff --git a/static/less/_.less b/static/less/_.less index 3b6d677..b860f7f 100644 --- a/static/less/_.less +++ b/static/less/_.less @@ -4,8 +4,9 @@ @import "../bower_components/colors/less/colors.less"; @import "../bower_components/yamm3/yamm/yamm.less"; -// include custom style -@import "_brand"; +// include components custom style +@import "components/_navbar"; + @brand-yellow: #fed000; @brand-gray: #434a54; diff --git a/static/less/_.min.css b/static/less/_.min.css index 8b7987f..f6446d1 100644 --- a/static/less/_.min.css +++ b/static/less/_.min.css @@ -1 +1 @@ -.header-top,.header-top .container{line-height:40px;height:40px}.navbar-container,.navbar-container.affix{z-index:5000;width:100%}.bg-navy{background-color:#001F3F}.bg-blue{background-color:#0074D9}.bg-aqua{background-color:#7FDBFF}.bg-teal{background-color:#39CCCC}.bg-olive{background-color:#3D9970}.bg-green{background-color:#2ECC40}.bg-lime{background-color:#01FF70}.bg-yellow{background-color:#FFDC00}.bg-orange{background-color:#FF851B}.bg-red{background-color:#FF4136}.bg-fuchsia{background-color:#F012BE}.bg-purple{background-color:#B10DC9}.bg-maroon{background-color:#85144B}.bg-white{background-color:#fff}.bg-gray{background-color:#aaa}.bg-silver{background-color:#ddd}.bg-black{background-color:#111}.navy{color:#001F3F}.blue{color:#0074D9}.aqua{color:#7FDBFF}.teal{color:#39CCCC}.olive{color:#3D9970}.green{color:#2ECC40}.lime{color:#01FF70}.yellow{color:#FFDC00}.orange{color:#FF851B}.red{color:#FF4136}.fuchsia{color:#F012BE}.purple{color:#B10DC9}.maroon{color:#85144B}.white{color:#fff}.silver{color:#ddd}.gray{color:#aaa}.black{color:#111}.header-top .container .top-left-links a,span.yellow{color:#fed000}.border--navy{border-color:#001F3F}.border--blue{border-color:#0074D9}.border--aqua{border-color:#7FDBFF}.border--teal{border-color:#39CCCC}.border--olive{border-color:#3D9970}.border--green{border-color:#2ECC40}.border--lime{border-color:#01FF70}.border--yellow{border-color:#FFDC00}.border--orange{border-color:#FF851B}.border--red{border-color:#FF4136}.border--fuchsia{border-color:#F012BE}.border--purple{border-color:#B10DC9}.border--maroon{border-color:#85144B}.border--white{border-color:#fff}.border--gray{border-color:#aaa}.border--silver{border-color:#ddd}.border--black{border-color:#111}.fill-navy{fill:#001F3F}.fill-blue{fill:#0074D9}.fill-aqua{fill:#7FDBFF}.fill-teal{fill:#39CCCC}.fill-olive{fill:#3D9970}.fill-green{fill:#2ECC40}.fill-lime{fill:#01FF70}.fill-yellow{fill:#FFDC00}.fill-orange{fill:#FF851B}.fill-red{fill:#FF4136}.fill-fuchsia{fill:#F012BE}.fill-purple{fill:#B10DC9}.fill-maroon{fill:#85144B}.fill-white{fill:#fff}.fill-gray{fill:#aaa}.fill-silver{fill:#ddd}.fill-black{fill:#111}.stroke-navy{stroke:#001F3F}.stroke-blue{stroke:#0074D9}.stroke-aqua{stroke:#7FDBFF}.stroke-teal{stroke:#39CCCC}.stroke-olive{stroke:#3D9970}.stroke-green{stroke:#2ECC40}.stroke-lime{stroke:#01FF70}.stroke-yellow{stroke:#FFDC00}.stroke-orange{stroke:#FF851B}.stroke-red{stroke:#FF4136}.stroke-fuchsia{stroke:#F012BE}.stroke-purple{stroke:#B10DC9}.stroke-maroon{stroke:#85144B}.stroke-white{stroke:#fff}.stroke-gray{stroke:#aaa}.stroke-silver{stroke:#ddd}.stroke-black{stroke:#111}.yamm .collapse,.yamm .dropdown,.yamm .dropup,.yamm .nav{position:static}.yamm .container{position:relative}.yamm .dropdown-menu{left:auto}.yamm .nav.navbar-right .dropdown-menu{left:auto;right:0}.yamm .yamm-content{padding:10px 20px;text-transform:uppercase}.yamm .dropdown.yamm-fw .dropdown-menu{left:0;right:0}.navbar-item__roballen{background:#027BC1}.navbar,body{min-width:970px!important}.nav .lead{font-size:13px;text-transform:uppercase;font-weight:700}.container{width:970px!important;max-width:none!important}.header-top{background-color:#434a54}.header-top .container .top-left-links{float:left;text-align:left;color:#fed000;font-size:10pt}.header-top .container .top-right-links{float:right;text-align:right;color:#fff;font-weight:700;font-size:10pt}.header-top .container .top-right-links a{color:#fff}.header-middle{background-color:#fed000;height:130px}.header-middle .logo-container{line-height:130px;float:left;text-align:left}.header-middle .quick-access-container{float:right;text-align:right}.navbar-header,.navbar-nav>li{float:left}.header-middle .quick-access-container form{margin-top:30px}.header-middle .quick-access-container form input{background-color:#ffda32;border:1px solid #cba600;width:245px;height:30px;padding:5px}.header-middle .quick-access-container form button{background:0 0;border:none}.header-middle .quick-access-container .small-welcome{font-size:10pt;margin-top:10px}.header-middle .quick-access-container .quick-links{font-size:10pt;color:#434a54}.header-middle .quick-access-container .quick-links a{color:#434a54}.navbar-fixed-bottom,.navbar-static-top,body{min-width:970px}.lead{font-size:14px;font-weight:700}.page-header{margin-bottom:30px}.page-header .lead{margin-bottom:10px}.container .navbar-collapse,.container .navbar-header{margin-right:0;margin-left:0}.navbar-collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important;border-top:0}.navbar-toggle{display:none}.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-brand{margin-left:-15px}.navbar-nav{float:left;margin:0}.navbar-nav>li>a{padding:15px}.navbar-nav.navbar-right{float:right}.navbar .navbar-nav .open .dropdown-menu{position:absolute;float:left;background-color:#434a54;color:#fff;border-width:0 1px 1px;border-radius:0 0 2px 2px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.navbar .navbar-nav .open .dropdown-menu ul{list-style-type:none;padding:0;margin:0 0 15px}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar .navbar-nav .open .dropdown-menu a{color:#fff;border:none;font-weight:700;font-size:11px}.navbar .navbar-nav .open .dropdown-menu a.title{color:#fed000!important;font-weight:700;font-size:12px;white-space:nowrap}.navbar .navbar-nav .open .dropdown-menu a:hover{text-decoration:underline;color:#fed000}a#order-call-link{color:#FC6E51}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>li>a:focus,.navbar .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff!important;background-color:#428bca!important}.navbar .navbar-nav .open .dropdown-menu>.disabled>a,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#999!important;background-color:transparent!important}.navbar-form{float:left;width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-container{padding:0}.dropdown-menu{min-width:720px!important}.navbar{margin-bottom:0!important}.main-container{padding:20px 0 100px}.index-goods{margin-top:20px}.index-goods .thumbnail{padding-bottom:10px!important;box-shadow:none;border:0}.index-goods .title{height:40px;overflow:hidden}.index-goods .title a{font-weight:700;color:#0074D9;font-size:12px}.index-goods .price{font-size:18px;font-weight:700;margin-bottom:5px}.index-goods .state-yes{color:#2ECC40;font-size:11px;margin-bottom:10px}.index-goods .state-no{color:#FF4136;font-size:11px;margin-bottom:10px}.index-goods a.cart-link{color:#111}.index-goods a.cart-link:hover{text-decoration:none;color:#111}footer .footer-col{margin-top:10px;background:0 0;border-left:1px #5e5e5e solid;height:100px}footer .footer-col.col-last{border-right:1px #5e5e5e solid}footer .footer-top{height:30px;margin-top:-40px;background-color:#fed000}footer .footer-bottom{height:330px;color:#fff;font-size:12px}footer .footer-bottom .title{color:#fed000;font-weight:700}footer .footer-bottom a{color:#fff}footer .footer-bottom a:hover{color:#fed000}html{position:relative!important;min-height:100%!important}body{font-family:"Open Sans",Arial,sans-serif;margin-bottom:360px!important;background-color:#f1f2f6}.footer{position:absolute!important;bottom:0!important;width:100%!important;height:360px!important}.navbar-inverse{background-image:linear-gradient(to bottom,#434a54 0,#535b68 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434a54', endColorstr='#ff535b68', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse a{color:#fff!important;border-right:1px #707c8d solid;font-weight:700;font-size:9pt}.navbar-inverse a:hover{color:#fed000!important;text-decoration:none}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}h1,h2,h3,h4,h5,h6{text-align:center}.well-lg form{margin:10px 0}.alert h4{text-align:left}.navbar-container.affix{top:0}.panel-filter ul{text-align:left;list-style-type:none;list-style-position:inherit;padding:0;margin:0}.panel-filter ul .icheckbox_square-blue{margin-right:5px}.panel-filter ul label{font-weight:400}hr.dashed{border:none;height:1px;width:100%;border-top:1px dashed #ccc}.category-filter-title{text-transform:uppercase;font-size:12px;font-weight:700;margin-bottom:15px}.category-paginator{font-size:12px;line-height:25px;background:#434a54;height:50px;color:#fff;margin-bottom:20px;border-radius:4px}.category-paginator .category-paginator-top{padding:0 10px;height:25px;border-bottom:1px #BDC3C7 solid}.category-paginator .category-paginator-bottom{height:20px;padding:0 10px}.category-paginator select{color:#000}.category-items{margin:0}.breadcrumb-arrow li a::before{border-left-color:#fed000}.breadcrumb-arrow li a::after{border-left:11px solid #e5bb00}.breadcrumb-arrow li a{background-color:#fed000;border:1px solid #e5bb00;color:#434a54}.breadcrumb-arrow li a:focus::before,.breadcrumb-arrow li a:hover::before{border-left-color:#fed000}.breadcrumb-arrow li a:focus,.breadcrumb-arrow li a:hover{background-color:#fed000;border:1px solid #fed000}.breadcrumb-arrow li a:active::after,.breadcrumb-arrow li a:active::before{border-left-color:#fed000}.breadcrumb-arrow li a:active{background-color:#fed000;border:1px solid #fed000}.category-paginator a,.category-paginator a:active,.category-paginator a:hover{color:#fed000}.product-min-thumbnails img{margin-bottom:10px}.product-big-thumbnail .product-big-thumbnail-container{width:400px;height:400px;min-width:400px;min-height:400px;max-width:400px;max-height:400px;background:#fff;border:1px solid #ddd;border-radius:4px;text-align:center;line-height:400px}.product-big-thumbnail .product-big-thumbnail-container img{width:396px;margin-top:2px}.product-short-description{padding-left:35px}.product-short-description h4{text-align:left;margin-top:0;padding-top:0}.product-short-description .product-detail-price{font-size:41px;font-weight:700}#cart-itogo,#cart-itogo-up,#order-itogo-amount,#order-itogo-amount-up,#order-itogo-delivery,#order-itogo-delivery-up,.product-in-stock .itogo,.table .table-cart-itogo{font-size:20px}.product-not-in-stock{color:#FF4136;font-style:italic;display:none}table.table-cart input{width:70px;text-align:left;float:right}table.table-cart tbody td{padding-top:45px}table.table-cart tbody td.table-cart-image{padding-top:8px}table.table-cart tbody td .form-control{margin-top:-8px}.breadcrumbs,ol.breadcrumb.breadcrumb-arrow{overflow:hidden!important}.table thead tr th{background:#434a54;color:#fff;border-right:1px gray solid}.table thead tr th:last-child{border-right:none}.table thead tr th:last-of-type{border-right:none}.table thead tr th:last{border-right:none}.table tbody td{border-right:1px #ddd solid}.table tbody td:last-child{border-right:none}.table tbody td:last-of-type{border-right:none}.table tbody td:last{border-right:none}ul.messages{display:none}.product-description{margin-top:40px;padding-top:20px;border-top:1px #ddd solid}.order-data .radio{margin-left:15px}.well-large{padding:40px}.news-container .comment{overflow:auto}.news-container .media{background:#F5F7FA;padding:15px}.call-form,.order-form{background:#FFF;padding:20px 30px;text-align:left;max-width:500px;margin:40px auto;position:relative}.sale-percent-block{background:#E9573F;width:50px;height:50px;text-align:center;color:#fff;top:0;font-size:20px;line-height:50px}.radio img{margin-top:10px;margin-bottom:10px}.radio label{margin-left:0!important;padding-left:0!important}.radio label input{margin-left:0!important;position:relative!important} \ No newline at end of file +.navbar-container,.navbar-container.affix{z-index:5000;width:100%}.bg-navy{background-color:#001F3F}.bg-blue{background-color:#0074D9}.bg-aqua{background-color:#7FDBFF}.bg-teal{background-color:#39CCCC}.bg-olive{background-color:#3D9970}.bg-green{background-color:#2ECC40}.bg-lime{background-color:#01FF70}.bg-yellow{background-color:#FFDC00}.bg-orange{background-color:#FF851B}.bg-red{background-color:#FF4136}.bg-fuchsia{background-color:#F012BE}.bg-purple{background-color:#B10DC9}.bg-maroon{background-color:#85144B}.bg-white{background-color:#fff}.bg-gray{background-color:#aaa}.bg-silver{background-color:#ddd}.bg-black{background-color:#111}.navy{color:#001F3F}.blue{color:#0074D9}.aqua{color:#7FDBFF}.teal{color:#39CCCC}.olive{color:#3D9970}.green{color:#2ECC40}.lime{color:#01FF70}.yellow{color:#FFDC00}.orange{color:#FF851B}.red{color:#FF4136}.fuchsia{color:#F012BE}.purple{color:#B10DC9}.maroon{color:#85144B}.white{color:#fff}.silver{color:#ddd}.gray{color:#aaa}.black{color:#111}.border--navy{border-color:#001F3F}.border--blue{border-color:#0074D9}.border--aqua{border-color:#7FDBFF}.border--teal{border-color:#39CCCC}.border--olive{border-color:#3D9970}.border--green{border-color:#2ECC40}.border--lime{border-color:#01FF70}.border--yellow{border-color:#FFDC00}.border--orange{border-color:#FF851B}.border--red{border-color:#FF4136}.border--fuchsia{border-color:#F012BE}.border--purple{border-color:#B10DC9}.border--maroon{border-color:#85144B}.border--white{border-color:#fff}.border--gray{border-color:#aaa}.border--silver{border-color:#ddd}.border--black{border-color:#111}.fill-navy{fill:#001F3F}.fill-blue{fill:#0074D9}.fill-aqua{fill:#7FDBFF}.fill-teal{fill:#39CCCC}.fill-olive{fill:#3D9970}.fill-green{fill:#2ECC40}.fill-lime{fill:#01FF70}.fill-yellow{fill:#FFDC00}.fill-orange{fill:#FF851B}.fill-red{fill:#FF4136}.fill-fuchsia{fill:#F012BE}.fill-purple{fill:#B10DC9}.fill-maroon{fill:#85144B}.fill-white{fill:#fff}.fill-gray{fill:#aaa}.fill-silver{fill:#ddd}.fill-black{fill:#111}.stroke-navy{stroke:#001F3F}.stroke-blue{stroke:#0074D9}.stroke-aqua{stroke:#7FDBFF}.stroke-teal{stroke:#39CCCC}.stroke-olive{stroke:#3D9970}.stroke-green{stroke:#2ECC40}.stroke-lime{stroke:#01FF70}.stroke-yellow{stroke:#FFDC00}.stroke-orange{stroke:#FF851B}.stroke-red{stroke:#FF4136}.stroke-fuchsia{stroke:#F012BE}.stroke-purple{stroke:#B10DC9}.stroke-maroon{stroke:#85144B}.stroke-white{stroke:#fff}.stroke-gray{stroke:#aaa}.stroke-silver{stroke:#ddd}.stroke-black{stroke:#111}.yamm .collapse,.yamm .dropdown,.yamm .dropup,.yamm .nav{position:static}.yamm .container{position:relative}.yamm .dropdown-menu{left:auto}.yamm .nav.navbar-right .dropdown-menu{left:auto;right:0}.yamm .yamm-content{padding:10px 20px;text-transform:uppercase}.yamm .dropdown.yamm-fw .dropdown-menu{left:0;right:0}.navbar-item__roballen{background:#027BC1}.currency-menu,.header-top{background-color:#434a54}.navbar-item__currency{float:left;height:50px;font-size:14px!important;width:34px}.navbar-item__currency:after{clear:both;display:table;content:" "}.open .currency-icon{background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.currency-menu,.navbar .navbar-nav .open .dropdown-menu{position:absolute;box-shadow:0 6px 12px rgba(0,0,0,.175)}.currency-icon{display:block;margin-left:0;width:49px;text-align:center;line-height:50px}.header-top,.header-top .container{line-height:40px;height:40px}.currency-menu{width:50px;left:inherit!important;margin:0;float:left;color:#fff;border-width:0 1px 1px;border-radius:0 0 2px 2px}.header-top .container .top-left-links a,span.yellow{color:#fed000}.currency-menu .yamm-content{padding:10px}.currency-item{margin-bottom:15px;text-align:center}.currency-item:last-child{margin-bottom:0}.currency-item__link{display:block;padding:0!important;border:0!important;font-size:14px!important}.navbar,body{min-width:970px!important}.nav .lead{font-size:13px;text-transform:uppercase;font-weight:700}.container{width:970px!important;max-width:none!important}.header-top .container .top-left-links{float:left;text-align:left;color:#fed000;font-size:10pt}.header-top .container .top-right-links{float:right;text-align:right;color:#fff;font-weight:700;font-size:10pt}.header-top .container .top-right-links a{color:#fff}.header-middle{background-color:#fed000;height:130px}.header-middle .logo-container{line-height:130px;float:left;text-align:left}.header-middle .quick-access-container{float:right;text-align:right}.navbar-header,.navbar-nav>li{float:left}.header-middle .quick-access-container form{margin-top:30px}.header-middle .quick-access-container form input{background-color:#ffda32;border:1px solid #cba600;width:245px;height:30px;padding:5px}.header-middle .quick-access-container form button{background:0 0;border:none}.header-middle .quick-access-container .small-welcome{font-size:10pt;margin-top:10px}.header-middle .quick-access-container .quick-links{font-size:10pt;color:#434a54}.header-middle .quick-access-container .quick-links a{color:#434a54}.navbar-fixed-bottom,.navbar-static-top,body{min-width:970px}.lead{font-size:14px;font-weight:700}.page-header{margin-bottom:30px}.page-header .lead{margin-bottom:10px}.container .navbar-collapse,.container .navbar-header{margin-right:0;margin-left:0}.navbar-collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important;border-top:0}.navbar-toggle{display:none}.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-brand{margin-left:-15px}.navbar-nav{float:left;margin:0}.navbar-nav>li>a{padding:15px}.navbar-nav.navbar-right{float:right}.navbar .navbar-nav .open .dropdown-menu{float:left;background-color:#434a54;color:#fff;border-width:0 1px 1px;border-radius:0 0 2px 2px}.navbar .navbar-nav .open .dropdown-menu ul{list-style-type:none;padding:0;margin:0 0 15px}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar .navbar-nav .open .dropdown-menu a{color:#fff;border:none;font-weight:700;font-size:11px}.navbar .navbar-nav .open .dropdown-menu a.title{color:#fed000!important;font-weight:700;font-size:12px;white-space:nowrap}.navbar .navbar-nav .open .dropdown-menu a:hover{text-decoration:underline;color:#fed000}a#order-call-link{color:#FC6E51}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>li>a:focus,.navbar .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff!important;background-color:#428bca!important}.navbar .navbar-nav .open .dropdown-menu>.disabled>a,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#999!important;background-color:transparent!important}.navbar-form{float:left;width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-container{padding:0}.dropdown-menu{min-width:720px!important}.navbar{margin-bottom:0!important}.main-container{padding:20px 0 100px}.index-goods{margin-top:20px}.index-goods .thumbnail{padding-bottom:10px!important;box-shadow:none;border:0}.index-goods .title{height:40px;overflow:hidden}.index-goods .title a{font-weight:700;color:#0074D9;font-size:12px}.index-goods .price{font-size:18px;font-weight:700;margin-bottom:5px}.index-goods .state-yes{color:#2ECC40;font-size:11px;margin-bottom:10px}.index-goods .state-no{color:#FF4136;font-size:11px;margin-bottom:10px}.index-goods a.cart-link{color:#111}.index-goods a.cart-link:hover{text-decoration:none;color:#111}footer .footer-col{margin-top:10px;background:0 0;border-left:1px #5e5e5e solid;height:100px}footer .footer-col.col-last{border-right:1px #5e5e5e solid}footer .footer-top{height:30px;margin-top:-40px;background-color:#fed000}footer .footer-bottom{height:330px;color:#fff;font-size:12px}footer .footer-bottom .title{color:#fed000;font-weight:700}footer .footer-bottom a{color:#fff}footer .footer-bottom a:hover{color:#fed000}html{position:relative!important;min-height:100%!important}body{font-family:"Open Sans",Arial,sans-serif;margin-bottom:360px!important;background-color:#f1f2f6}.footer{position:absolute!important;bottom:0!important;width:100%!important;height:360px!important}.navbar-inverse{background-image:linear-gradient(to bottom,#434a54 0,#535b68 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434a54', endColorstr='#ff535b68', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse a{color:#fff!important;border-right:1px #707c8d solid;font-weight:700;font-size:9pt}.navbar-inverse a:hover{color:#fed000!important;text-decoration:none}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}h1,h2,h3,h4,h5,h6{text-align:center}.well-lg form{margin:10px 0}.alert h4{text-align:left}.navbar-container.affix{top:0}.panel-filter ul{text-align:left;list-style-type:none;list-style-position:inherit;padding:0;margin:0}.panel-filter ul .icheckbox_square-blue{margin-right:5px}.panel-filter ul label{font-weight:400}hr.dashed{border:none;height:1px;width:100%;border-top:1px dashed #ccc}.category-filter-title{text-transform:uppercase;font-size:12px;font-weight:700;margin-bottom:15px}.category-paginator{font-size:12px;line-height:25px;background:#434a54;height:50px;color:#fff;margin-bottom:20px;border-radius:4px}.category-paginator .category-paginator-top{padding:0 10px;height:25px;border-bottom:1px #BDC3C7 solid}.category-paginator .category-paginator-bottom{height:20px;padding:0 10px}.category-paginator select{color:#000}.category-items{margin:0}.breadcrumb-arrow li a::before{border-left-color:#fed000}.breadcrumb-arrow li a::after{border-left:11px solid #e5bb00}.breadcrumb-arrow li a{background-color:#fed000;border:1px solid #e5bb00;color:#434a54}.breadcrumb-arrow li a:focus::before,.breadcrumb-arrow li a:hover::before{border-left-color:#fed000}.breadcrumb-arrow li a:focus,.breadcrumb-arrow li a:hover{background-color:#fed000;border:1px solid #fed000}.breadcrumb-arrow li a:active::after,.breadcrumb-arrow li a:active::before{border-left-color:#fed000}.breadcrumb-arrow li a:active{background-color:#fed000;border:1px solid #fed000}.category-paginator a,.category-paginator a:active,.category-paginator a:hover{color:#fed000}.product-min-thumbnails img{margin-bottom:10px}.product-big-thumbnail .product-big-thumbnail-container{width:400px;height:400px;min-width:400px;min-height:400px;max-width:400px;max-height:400px;background:#fff;border:1px solid #ddd;border-radius:4px;text-align:center;line-height:400px}.product-big-thumbnail .product-big-thumbnail-container img{width:396px;margin-top:2px}.product-short-description{padding-left:35px}.product-short-description h4{text-align:left;margin-top:0;padding-top:0}.product-short-description .product-detail-price{font-size:41px;font-weight:700}#cart-itogo,#cart-itogo-up,#order-itogo-amount,#order-itogo-amount-up,#order-itogo-delivery,#order-itogo-delivery-up,.product-in-stock .itogo,.table .table-cart-itogo{font-size:20px}.product-not-in-stock{color:#FF4136;font-style:italic;display:none}table.table-cart input{width:70px;text-align:left;float:right}table.table-cart tbody td{padding-top:45px}table.table-cart tbody td.table-cart-image{padding-top:8px}table.table-cart tbody td .form-control{margin-top:-8px}.breadcrumbs,ol.breadcrumb.breadcrumb-arrow{overflow:hidden!important}.table thead tr th{background:#434a54;color:#fff;border-right:1px gray solid}.table thead tr th:last-child{border-right:none}.table thead tr th:last-of-type{border-right:none}.table thead tr th:last{border-right:none}.table tbody td{border-right:1px #ddd solid}.table tbody td:last-child{border-right:none}.table tbody td:last-of-type{border-right:none}.table tbody td:last{border-right:none}ul.messages{display:none}.product-description{margin-top:40px;padding-top:20px;border-top:1px #ddd solid}.order-data .radio{margin-left:15px}.well-large{padding:40px}.news-container .comment{overflow:auto}.news-container .media{background:#F5F7FA;padding:15px}.call-form,.order-form{background:#FFF;padding:20px 30px;text-align:left;max-width:500px;margin:40px auto;position:relative}.sale-percent-block{background:#E9573F;width:50px;height:50px;text-align:center;color:#fff;top:0;font-size:20px;line-height:50px}.radio img{margin-top:10px;margin-bottom:10px}.radio label{margin-left:0!important;padding-left:0!important}.radio label input{margin-left:0!important;position:relative!important} \ No newline at end of file diff --git a/static/less/_brand.less b/static/less/_brand.less deleted file mode 100644 index 0d9ba93..0000000 --- a/static/less/_brand.less +++ /dev/null @@ -1,8 +0,0 @@ -@brand-roballen: #027BC1; -@brand-roballen-second: #A4A5A9; - -.navbar-item__roballen { - background: @brand-roballen; -} - - diff --git a/static/less/components/_navbar.less b/static/less/components/_navbar.less new file mode 100644 index 0000000..9551448 --- /dev/null +++ b/static/less/components/_navbar.less @@ -0,0 +1,71 @@ +@brand-roballen: #027BC1; +@brand-roballen-second: #A4A5A9; + +.navbar-item__roballen { + background: @brand-roballen; +} + +.open .navbar-item__currency { + //color: #fed000 !important; +} + +.navbar-item__currency { + float: left; + height: 50px; + font-size: 14px!important; + width: 34px; + + &:after { + clear: both; + display: table; + content: " "; + } +} + +.open .currency-icon { + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +} + +.currency-icon { + display: block; + margin-left: 0; + width: 49px; + text-align: center; + line-height: 50px; +} + +.currency-menu { + width: 50px; + left: inherit!important; + margin: 0; + position: absolute; + float: left; + background-color: #434a54; + color: #fff; + border-width: 0 1px 1px; + border-radius: 0 0 2px 2px; + box-shadow: 0 6px 12px rgba(0,0,0,.175); + + & .yamm-content { + padding: 10px; + } +} + + +.currency-item { + &:last-child { + margin-bottom: 0; + } + margin-bottom:15px; + text-align: center; +} + +.currency-item__link { + display: block; + padding: 0!important; + border: 0!important; + font-size: 14px!important; +} \ No newline at end of file diff --git a/store/admin.py b/store/admin.py index f5d3535..ad563ed 100644 --- a/store/admin.py +++ b/store/admin.py @@ -133,3 +133,8 @@ class ProductFeedbackAdmin(admin.ModelAdmin): # class DogAdmin(admin.ModelAdmin): # list_display = ('name', 'data') # + + +@admin.register(Currency) +class CurrencyAdmin(admin.ModelAdmin): + list_display = ('title', 'exchange', 'ISO_letter_code') diff --git a/store/currency.py b/store/currency.py new file mode 100644 index 0000000..c9509d5 --- /dev/null +++ b/store/currency.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from .models import Currency as CurrencyModel + +MAIN_CURRENCY_ID = '1' + + +class Currency(object): + currency_id = '' + + def __init__(self, request): + self.cart_id = request.session.get('currency_id', None) + if not self.currency_id: + self.currency_id = MAIN_CURRENCY_ID + request.session['currency_id'] = MAIN_CURRENCY_ID + + + + + diff --git a/store/migrations/0056_auto_20170306_1823.py b/store/migrations/0056_auto_20170306_1823.py new file mode 100644 index 0000000..bafcfb7 --- /dev/null +++ b/store/migrations/0056_auto_20170306_1823.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-03-06 18:23 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('store', '0055_auto_20170224_1244'), + ] + + operations = [ + migrations.CreateModel( + name='Currency', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=25, verbose_name='Название')), + ('exchange', models.FloatField(verbose_name='Курс, KZT/ед.')), + ('abridgement', models.CharField(max_length=25, verbose_name='Сокращенное название')), + ('ISO_letter_code', models.CharField(help_text='Например: KZT, USD, RUB', max_length=3, verbose_name='Буквенный код')), + ('HTML_letter_code', models.CharField(help_text='Код в HTML для вывода в шаблонах', max_length=10, verbose_name='HTML код')), + ], + options={ + 'verbose_name': 'валюта', + 'verbose_name_plural': 'валюты', + }, + ) + ] diff --git a/store/migrations/0057_auto_20170306_1933.py b/store/migrations/0057_auto_20170306_1933.py new file mode 100644 index 0000000..5d82487 --- /dev/null +++ b/store/migrations/0057_auto_20170306_1933.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations + + +def create_currency(apps, schema_editor): + Currency = apps.get_model("store", "Currency") + Currency.objects.get_or_create(title="Казахстанский тенге", + exchange=1.00, + abridgement="тенге", + ISO_letter_code="KZT", + HTML_letter_code="₸") + Currency.objects.get_or_create(title="Российский рубль", + exchange=0.18519, + abridgement="руб.", + ISO_letter_code="RUB", + HTML_letter_code="₽") + Currency.objects.get_or_create(title="Доллар США", + exchange=0.00315, + abridgement="доллар", + ISO_letter_code="USD", + HTML_letter_code="$") + + +class Migration(migrations.Migration): + + dependencies = [ + ('store', '0056_auto_20170306_1823'), + ] + + operations = [ + migrations.RunPython(create_currency) + ] + diff --git a/store/models.py b/store/models.py index 5c0e6ab..1a80d44 100644 --- a/store/models.py +++ b/store/models.py @@ -229,8 +229,11 @@ class Product(models.Model): min_v = v return min_v - def min_price(self, profile=None): - return self.min_price_variation().get_price(profile) + def min_price(self, profile=None, currency=None): + price = self.min_price_variation().get_price(profile) + if currency: + pass + return price def is_discount(self): return self.variations.filter(discount__gt=0).count() > 0 @@ -262,6 +265,22 @@ class Product(models.Model): return retval +class Currency(models.Model): + title = models.CharField('Название', max_length=25) + exchange = models.FloatField('Курс, KZT/ед.') + abridgement = models.CharField('Сокращенное название', max_length=25) + ISO_letter_code = models.CharField('Буквенный код', help_text='Например: KZT, USD, RUB', max_length=3) + HTML_letter_code = models.CharField('HTML код', help_text='Код в HTML для вывода в шаблонах', max_length=10) + + class Meta: + verbose_name = 'валюта' + verbose_name_plural = 'валюты' + ordering = ['pk'] + + def __str__(self): + return self.title + + class ProductVariation(models.Model): product = models.ForeignKey( Product, verbose_name='Товар', related_name='variations')