remotes/origin/artem
Gena 11 years ago
parent 5d542d2bd1
commit 07a5114600
  1. 3
      .gitignore
  2. 27
      api/views.py
  3. 43
      batiskaf/templates/jinja2/base.jinja
  4. 2
      batiskaf/templates/jinja2/category.jinja
  5. 2
      batiskaf/templates/jinja2/index.jinja
  6. 4
      batiskaf/templates/jinja2/product.jinja
  7. 5
      batiskaf/urls.py
  8. 95
      static/js/_.js
  9. 3
      static/less/_.css
  10. 2
      static/less/_.less

3
.gitignore vendored

@ -2,6 +2,9 @@
*.pyo *.pyo
.idea .idea
.tmp .tmp
.tmp/
.tmp/eml
.tmp/eml/*
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
*.db *.db

@ -3,6 +3,8 @@ from django.http import JsonResponse
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.decorators import api_view from rest_framework.decorators import api_view
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from store.models import Product
@csrf_exempt @csrf_exempt
def call_order(request): def call_order(request):
@ -20,3 +22,28 @@ def call_order(request):
except Exception as e: except Exception as e:
retval = dict(error=True) retval = dict(error=True)
return JsonResponse(retval) return JsonResponse(retval)
@csrf_exempt
def order_order(request):
retval = dict(error=False)
try:
item = Product.objects.get(pk=request.POST['item'])
mail_managers('Заказали товар', '''
Товар: {}
Имя: {}
Телефон: {}
Email: {}
Комментарий: {}
'''.format(
item.title,
request.POST['name'],
request.POST['phone'],
request.POST['email'],
request.POST['comment'],
))
except Exception as e:
retval = dict(error=True)
return JsonResponse(retval)

@ -12,7 +12,7 @@
<link href="/static/bower_components/Bootflat/css/bootstrap.min.css" rel="stylesheet"> <link href="/static/bower_components/Bootflat/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/bower_components/Bootflat/bootflat/css/bootflat.min.css" rel="stylesheet"> <link href="/static/bower_components/Bootflat/bootflat/css/bootflat.min.css" rel="stylesheet">
<link href="/static/less/_.css?v=10" rel="stylesheet"> <link href="/static/less/_.css?v=11" rel="stylesheet">
<link href="/static/css/select2.min.css" rel="stylesheet"> <link href="/static/css/select2.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/static/bower_components/sweetalert/lib/sweet-alert.css"> <link rel="stylesheet" type="text/css" href="/static/bower_components/sweetalert/lib/sweet-alert.css">
<link href="/static/js/icheck/skins/square/blue.css" rel="stylesheet"> <link href="/static/js/icheck/skins/square/blue.css" rel="stylesheet">
@ -238,7 +238,6 @@
{% endif %} {% endif %}
<form action="/" id="call-form" class="form mfp-hide call-form" method="post"> <form action="/" id="call-form" class="form mfp-hide call-form" method="post">
<h3>Заказать бесплатный звонок</h3> <h3>Заказать бесплатный звонок</h3>
<input id="id_reply_to" name="reply_to" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="control-label" for="id_name">Ваше имя</label> <label class="control-label" for="id_name">Ваше имя</label>
@ -267,6 +266,44 @@
</button> </button>
</div> </div>
</form> </form>
<form action="/" id="order-form" class="form mfp-hide order-form" method="post">
<h3>Запрос наличия и цены</h3>
<input id="id_item" name="item" type="hidden">
<div class="form-group">
<label class="control-label" for="id_name">Ваше имя</label>
<div class=" ">
<input class=" form-control" id="id_name" maxlength="45" name="name" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label" for="id_phone">Номер телефона</label>
<div class=" ">
<input class=" form-control" id="id_phone" maxlength="254" name="phone" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label" for="id_email">Email (если есть)</label>
<div class=" ">
<input class=" form-control" id="id_email" maxlength="254" name="email" type="email">
</div>
</div>
<div class="form-group">
<label class="control-label" for="id_comment">Комментарий (необязательно)</label>
<div class=" ">
<input class=" form-control" id="id_comment" maxlength="254" name="comment" type="text">
</div>
</div>
<div class="form-group text-left">
<button type="submit" name="call-order" class="btn btn-primary"><span class="glyphicon glyphicon-phone-alt"
aria-hidden="true"></span> Сделать запрос
</button>
</div>
</form>
{% block footer_scripts %} {% block footer_scripts %}
<script src="/static/bower_components/jquery/dist/jquery.min.js"></script> <script src="/static/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/static/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script src="/static/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
@ -280,7 +317,7 @@
<script src="/static/js/Selecter/jquery.fs.selecter.min.js"></script> <script src="/static/js/Selecter/jquery.fs.selecter.min.js"></script>
<script src="/static/js/select2.min.js"></script> <script src="/static/js/select2.min.js"></script>
<script src="/static/js/mp/dist/jquery.magnific-popup.min.js"></script> <script src="/static/js/mp/dist/jquery.magnific-popup.min.js"></script>
<script src="/static/js/_.js?v=6"></script> <script src="/static/js/_.js?v=7"></script>
{% endblock footer_scripts %} {% endblock footer_scripts %}
{% block jss %}{% endblock jss %} {% block jss %}{% endblock jss %}
{% if messages %} {% if messages %}

@ -121,7 +121,7 @@
href="/store/cart/add/?pk={{ product.variations.filter(in_stock__gt=0).order_by('price').first().pk }}&count=1&next={{ request.get_full_path()|urlencode }}"><span><span href="/store/cart/add/?pk={{ product.variations.filter(in_stock__gt=0).order_by('price').first().pk }}&count=1&next={{ request.get_full_path()|urlencode }}"><span><span
class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Добавить в корзину</span></a> class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Добавить в корзину</span></a>
{% else %} {% else %}
<a class=" btn btn-danger btn-block" href="#"><span><span <a class=" btn btn-danger btn-block order-order-link" href="#order-form" data-itemid="{{ product.pk }}"><span><span
class="glyphicon glyphicon-import" aria-hidden="true"></span> Заказать</span></a> class="glyphicon glyphicon-import" aria-hidden="true"></span> Заказать</span></a>
{% endif %} {% endif %}
</div> </div>

@ -109,7 +109,7 @@
href="/store/cart/add/?pk={{ product.variations.filter(in_stock__gt=0).order_by('price').first().pk }}&count=1&next={{ request.get_full_path()|urlencode }}"><span><span href="/store/cart/add/?pk={{ product.variations.filter(in_stock__gt=0).order_by('price').first().pk }}&count=1&next={{ request.get_full_path()|urlencode }}"><span><span
class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Добавить в корзину</span></a> class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Добавить в корзину</span></a>
{% else %} {% else %}
<a class=" btn btn-danger btn-block" href="#"><span><span <a class=" btn btn-danger btn-block order-order-link" href="#order-form" data-itemid="{{ product.pk }}"><span><span
class="glyphicon glyphicon-import" aria-hidden="true"></span> Заказать</span></a> class="glyphicon glyphicon-import" aria-hidden="true"></span> Заказать</span></a>
{% endif %} {% endif %}
</div> </div>

@ -78,7 +78,9 @@
</div> </div>
<div class="product-not-in-stock"> <div class="product-not-in-stock">
Товара нет в наличии Товара нет в наличии <br/><br/>
<a class=" btn btn-danger btn-block order-order-link" href="#order-form" data-itemid="{{ product.pk }}" style="max-width: 200px"><span><span
class="glyphicon glyphicon-import" aria-hidden="true"></span> Заказать</span></a>
</div> </div>
</div> </div>
</div> </div>

@ -4,7 +4,7 @@ from api.views import call_order
from store.views import order_view, order_print from store.views import order_view, order_print
from main.views import * from main.views import *
from rest_framework import routers from rest_framework import routers
#from api.urls import router # from api.urls import router
from rest_framework import routers from rest_framework import routers
from api.views import * from api.views import *
# Serializers define the API representation. # Serializers define the API representation.
@ -24,6 +24,7 @@ urlpatterns = patterns(
url(r'^news/', include('news.urls')), url(r'^news/', include('news.urls')),
url(r'^get_order_amount/$', 'store.views.get_order_amount'), url(r'^get_order_amount/$', 'store.views.get_order_amount'),
url(r'^order_call/$', 'api.views.call_order'), url(r'^order_call/$', 'api.views.call_order'),
url(r'^order_order/$', 'api.views.order_order'),
url(r'^order/(?P<order>.+)/print/$', order_print, url(r'^order/(?P<order>.+)/print/$', order_print,
name='store_order_print'), name='store_order_print'),
@ -31,7 +32,7 @@ urlpatterns = patterns(
name='store_order_view'), name='store_order_view'),
url(r'^store/', include('store.urls')), url(r'^store/', include('store.urls')),
url(r'^account/', include('accounts.urls')), url(r'^account/', include('accounts.urls')),
url(r'^advantages/$', advantages,name='advantages'), url(r'^advantages/$', advantages, name='advantages'),
url(r'^payment/$', payment, name='payment'), url(r'^payment/$', payment, name='payment'),
url(r'^delivery/$', delivery, name='delivery'), url(r'^delivery/$', delivery, name='delivery'),
url(r'^contacts/$', contacts, name='contacts'), url(r'^contacts/$', contacts, name='contacts'),

@ -230,48 +230,101 @@ $(document).ready(function () {
$('#order-call-link').magnificPopup({ $('#order-call-link').magnificPopup({
type: 'inline', type: 'inline',
preloader: false, preloader: false,
});
$('.order-order-link').magnificPopup({
type: 'inline',
preloader: false,
callbacks: {
open: function () {
$('#order-form #id_item').val($(this)[0].ev.attr('data-itemid'));
}
}
}); });
$('#call-form').on('submit', function(){ $('#call-form').on('submit', function () {
var f_name = $('#call-form #id_name'); var f_name = $('#call-form #id_name');
var f_phone = $('#call-form #id_phone'); var f_phone = $('#call-form #id_phone');
var f_time = $('#call-form #id_time'); var f_time = $('#call-form #id_time');
var is_full = true; var is_full = true;
if (!f_name.val()){ if (!f_name.val()) {
f_name.parent().parent('.form-group').addClass('has-error'); f_name.parent().parent('.form-group').addClass('has-error');
is_full = false; is_full = false;
}else{ } else {
f_name.parent().parent('.form-group').removeClass('has-error'); f_name.parent().parent('.form-group').removeClass('has-error');
} }
if (!f_phone.val()){ if (!f_phone.val()) {
f_phone.parent().parent('.form-group').addClass('has-error'); f_phone.parent().parent('.form-group').addClass('has-error');
is_full = false; is_full = false;
}else{ } else {
f_phone.parent().parent('.form-group').removeClass('has-error'); f_phone.parent().parent('.form-group').removeClass('has-error');
} }
if (!f_time.val()){ if (!f_time.val()) {
f_time.parent().parent('.form-group').addClass('has-error'); f_time.parent().parent('.form-group').addClass('has-error');
is_full = false; is_full = false;
}else{ } else {
f_time.parent().parent('.form-group').removeClass('has-error'); f_time.parent().parent('.form-group').removeClass('has-error');
} }
if (is_full){ if (is_full) {
$.ajax({
type: "POST",
url: '/order_call/',
data: {
name: f_name.val(),
phone: f_phone.val(),
time: f_time.val(),
},
success: function (data) {
$.magnificPopup.close();
swal("Спасибо!", "Мы приняли вашу заявку! Наш менеджер свяжется с вами в указанное время.", "success")
}
});
}
//form-group has-error
return false;
});
$('#order-form').on('submit', function () {
var f_name = $('#order-form #id_name');
var f_phone = $('#order-form #id_phone');
var f_email = $('#order-form #id_email');
var f_comment = $('#order-form #id_comment');
var f_item = $('#order-form #id_item');
var is_full = true;
if (!f_name.val()) {
f_name.parent().parent('.form-group').addClass('has-error');
is_full = false;
} else {
f_name.parent().parent('.form-group').removeClass('has-error');
}
if (!f_phone.val()) {
f_phone.parent().parent('.form-group').addClass('has-error');
is_full = false;
} else {
f_phone.parent().parent('.form-group').removeClass('has-error');
}
if (is_full) {
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: '/order_call/', url: '/order_order/',
data: { data: {
name: f_name.val(), name: f_name.val(),
phone: f_phone.val(), phone: f_phone.val(),
time: f_time.val(), email: f_email.val(),
}, comment: f_comment.val(),
success: function(data){ item: f_item.val(),
},
$.magnificPopup.close(); success: function (data) {
swal("Спасибо!", "Мы приняли вашу заявку! Наш менеджер свяжется с вами в указанное время.", "success")
$.magnificPopup.close();
} swal("Спасибо!", "Мы приняли вашу заявку! Наш менеджер свяжется с вами в ближайшее время.", "success")
}
}); });
} }
//form-group has-error //form-group has-error

@ -942,7 +942,8 @@ ul.messages {
background: #F5F7FA; background: #F5F7FA;
padding: 15px; padding: 15px;
} }
.call-form { .call-form,
.order-form {
background: #FFF; background: #FFF;
padding: 20px 30px; padding: 20px 30px;
text-align: left; text-align: left;

@ -815,7 +815,7 @@ ul.messages {
padding: 15px; padding: 15px;
} }
} }
.call-form { .call-form, .order-form {
background: #FFF; background: #FFF;
padding: 20px 30px; padding: 20px 30px;
text-align: left; text-align: left;

Loading…
Cancel
Save