dpd get cities

stepan-k
Dmitriy Shesterkin 9 years ago
parent ef94a90b25
commit ad2dc3adb3
  1. 5
      batiskaf/settings.py
  2. 27
      batiskaf/templates/jinja2/cart_detail.jinja
  3. 5
      batiskaf/urls.py
  4. 1
      dpd/__init__.py
  5. BIN
      static/img/dpd.png
  6. 47
      static/js/_.js
  7. 60
      store/views.py

@ -282,3 +282,8 @@ MERCHANT_ID = "92210431" # ; Терминал ИД в банковской Си
DJANGORESIZED_DEFAULT_SIZE = [1920, 1080]
DJANGORESIZED_DEFAULT_QUALITY = 75
DJANGORESIZED_DEFAULT_KEEP_META = True
DPD_ID = '1122000140'
DPD_KEY = '0599EDC793B39FA6C098C3A8A7B5C603BBD3BE56'
DPD_DEV_SERVER = 'http://wstest.dpd.ru'
DPD_SERVER = 'http://ws.dpd.ru'

@ -103,6 +103,12 @@
Казпочта <br><img src="/static/img/kazpost.jpg" alt="" width="150">
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="deliv_service" id="deliv_service4" value="dpd">
DPD Казахстан <br><img src="/static/img/dpd.png" alt="" width="90">
</label>
</div>
<div class="radio" style="display:none">
<label>
<input type="radio" name="deliv_service" id="deliv_service2"
@ -166,6 +172,27 @@
</div>
</div>
<div class="dpd_block" style="display: none;">
<div class="form-group">
<label class="control-label" for="id_city">Населенный пункт</label>
<div>
<select name="dpd_city" id="id_dpd_city" class="form-control" style="width:100%">
<option value="0" selected="selected">Выберете населенный пункт</option>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label" for="id_dpd_address">Адрес</label>
<div>
<input name="dpd_address" type="text" id="id_dpd_address"
class="form-control" value="{{ request.POST['dpd_address'] or '' }}">
</div>
</div>
</div>
{{ form|bootstrap }}

@ -102,7 +102,7 @@ urlpatterns = (
url(r'^api/', include(router.urls)),
url(r'^news/', include('news.urls')),
url(r'^promo/', include('promo.urls')),
url(r'^get_order_amount/$', 'store.views.get_order_amount'),
# url(r'^get_order_amount/$', 'store.views.get_order_amount'),
url(r'^get_order_kazpost_amount/$', 'store.views.get_order_kazpost_amount'),
url(r'^order_call/$', 'api.views.call_order'),
url(r'^order_order/$', 'api.views.order_order'),
@ -115,6 +115,9 @@ urlpatterns = (
url(r'^order/(?P<order>.+)/$', order_view,
name='store_order_view'),
url(r'^get_dpd_cities/$', 'store.views.get_dpd_cities'),
url(r'^store/', include('store.urls')),
url(r'^account/', include('accounts.urls')),
url(r'^advantages/$', advantages, name='advantages'),

@ -0,0 +1 @@
# -*- coding: utf-8 -*-

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -301,20 +301,65 @@ $(document).ready(function () {
$('#order-itogo-amount').html(parseFloat(cartItogo));
}
function selectDpdCity() {
console.log('dpd');
// $.get("/get_dpd_cities/", function (data) {
//
// console.log(data);
//
// $("#id_dpd_city").select2({
// data: data
// });
//
// });
$("#id_dpd_city").select2({
minimumInputLength: 2,
ajax: {
method: 'GET',
url: "/get_dpd_cities/",
dataType: 'json',
data: function (params) {
return {
search: params.term
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
}
});
};
$('input[name=deliv_service]').change(function () {
switch ($(this).val()) {
case 'pickup' :
selectPickup();
$('.alemtat_block').hide();
$('.kazpost_block').hide();
$('.dpd_block').hide();
break;
case 'kazpost' :
selectKazpostCity();
$('.alemtat_block').hide();
$('.dpd_block').hide();
$('.kazpost_block').show();
break;
case 'dpd' :
selectDpdCity();
$('.alemtat_block').hide();
$('.kazpost_block').hide();
$('.dpd_block').show();
break;
case 'alemtat' :
selectCity();
$('.alemtat_block').show();

@ -1,4 +1,6 @@
import base64
import json
from django.contrib.auth import authenticate, login
from django.core.mail import mail_managers, mail_admins
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
@ -19,6 +21,8 @@ from django.http import JsonResponse
from datetime import datetime
from django.conf import settings
from django.contrib.sitemaps import Sitemap
import xml.etree.ElementTree as ET
from django.http import HttpResponse
import kkb
@ -192,7 +196,8 @@ class ProductView(CategoryBaseView, DetailView):
p = Product.objects.get(slug=i)
if p not in retval['ranee']:
retval['ranee'].append(p)
except: pass
except:
pass
# import pdb;pdb.set_trace()
if retval['ranee']:
retval['ranee'] = retval['ranee'][::-1][:4]
@ -375,7 +380,6 @@ def get_order_amount(request):
def get_kazpost_tarif(weight, to):
import requests
import re
@ -464,6 +468,58 @@ def kkb_result(request):
return render(request, 'kkb_ok.jinja')
def get_dpd_cities(request, *args, **kwargs):
import requests
url = "http://ws.dpd.ru/services/geography2?wsdl"
headers = {'content-type': 'text/xml'}
body = """<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://dpd.ru/ws/geography/2015-05-20">
<soapenv:Header/>
<soapenv:Body>
<ns:getCitiesCashPay>
<request>
<auth>
<clientNumber>{clientID}</clientNumber>
<clientKey>{clientKey}</clientKey>
</auth>
<countryCode>KZ</countryCode>
</request>
</ns:getCitiesCashPay>
</soapenv:Body>
</soapenv:Envelope>
"""
places = list()
search = request.GET.get('search', '')
body = body.format(clientID=settings.DPD_ID, clientKey=settings.DPD_KEY)
try:
response = requests.post(url, data=body, headers=headers)
elements = ET.fromstring(response.content).findall(".//return")
if search:
for el in elements:
if search.lower() in el.find('.//cityName').text.lower():
add_items(el, places)
else:
for el in elements:
add_items(el, places)
data = json.dumps(places)
except:
data = json.dumps({'msg': 'false'})
return HttpResponse(data, content_type='json')
def add_items(el, places):
places.append({'id': el.find('.//cityId').text,
'text': '{0} {1}'.format(
el.find('.//abbreviation').text,
el.find('.//cityName').text
)})
class ProductSitemap(Sitemap):
changefreq = "daily"
priority = 0.8

Loading…
Cancel
Save