diff --git a/accounts/admin.py b/accounts/admin.py
index 8c38f3f..0d0327a 100644
--- a/accounts/admin.py
+++ b/accounts/admin.py
@@ -1,3 +1,69 @@
from django.contrib import admin
+from django import forms
+from django.contrib import admin
+from django.contrib.auth.models import Group
+from django.contrib.auth.admin import UserAdmin
+from django.contrib.auth.forms import ReadOnlyPasswordHashField
+
+from .models import Profile
+
+
+class ProfileCreationForm(forms.ModelForm):
+ password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput)
+ password2 = forms.CharField(label='Подтверждение', widget=forms.PasswordInput)
+
+ class Meta:
+ model = Profile
+ fields = ('phone', 'email')
+
+ def clean_password2(self):
+ password1 = self.cleaned_data.get("password1")
+ password2 = self.cleaned_data.get("password2")
+ if password1 and password2 and password1 != password2:
+ raise forms.ValidationError("Пароли не совпадают")
+ return password2
+
+ def save(self, commit=True):
+ user = super(ProfileCreationForm, self).save(commit=False)
+ user.set_password(self.cleaned_data["password1"])
+ if commit:
+ user.save()
+ return user
+
+
+class ProfileChangeForm(forms.ModelForm):
+ password = ReadOnlyPasswordHashField()
+
+ class Meta:
+ model = Profile
+ fields = ('phone', 'email', 'password', 'is_active', 'is_superuser')
+
+ def clean_password(self):
+ return self.initial["password"]
+
+
+class ProfileAdmin(UserAdmin):
+ form = ProfileChangeForm
+ add_form = ProfileCreationForm
+
+ list_display = ('phone', 'first_name', 'last_name', 'email', 'is_superuser', 'date_joined')
+ list_filter = ('is_superuser',)
+ fieldsets = (
+ (None, {'fields': (
+ 'phone', 'email', 'password', 'first_name', 'last_name'
+ )}),
+ ('Инфо', {'fields': ('date_joined',)}),
+ ('Доступ', {'fields': ('is_superuser', 'is_active')}),
+ )
+ add_fieldsets = (
+ (None, {
+ 'classes': ('wide',),
+ 'fields': ('phone', 'email', 'first_name', 'last_name', 'password1', 'password2')}
+ ),
+ )
+ search_fields = ('phone', 'email',)
+ ordering = ('phone', 'email',)
+ filter_horizontal = ()
-# Register your models here.
+admin.site.register(Profile, ProfileAdmin)
+admin.site.unregister(Group)
diff --git a/accounts/forms.py b/accounts/forms.py
new file mode 100644
index 0000000..6f59cf3
--- /dev/null
+++ b/accounts/forms.py
@@ -0,0 +1,4 @@
+from django import forms
+
+class LoginForm(forms.Form):
+ phone = forms.CharField(label='Телефон', max_length=15)
\ No newline at end of file
diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py
new file mode 100644
index 0000000..06190d9
--- /dev/null
+++ b/accounts/migrations/0001_initial.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import datetime
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Profile',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, primary_key=True, auto_created=True)),
+ ('password', models.CharField(verbose_name='password', max_length=128)),
+ ('last_login', models.DateTimeField(verbose_name='last login', blank=True, null=True)),
+ ('phone', models.CharField(verbose_name='Телефон', db_index=True, max_length=15, unique=True)),
+ ('email', models.EmailField(verbose_name='Email', db_index=True, default=None, max_length=254, unique=True)),
+ ('first_name', models.CharField(verbose_name='first name', blank=True, max_length=30)),
+ ('last_name', models.CharField(verbose_name='last name', blank=True, max_length=30)),
+ ('date_joined', models.DateTimeField(verbose_name='Регистрация', default=datetime.datetime.now)),
+ ('is_superuser', models.BooleanField(verbose_name='Админ', default=False)),
+ ('is_active', models.BooleanField(verbose_name='Активный', db_index=True, default=True)),
+ ],
+ options={
+ 'verbose_name': 'пользователь',
+ 'verbose_name_plural': 'пользователи',
+ },
+ ),
+ ]
diff --git a/accounts/migrations/0002_auto_20150611_2306.py b/accounts/migrations/0002_auto_20150611_2306.py
new file mode 100644
index 0000000..6b71e6c
--- /dev/null
+++ b/accounts/migrations/0002_auto_20150611_2306.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('accounts', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='profile',
+ name='first_name',
+ field=models.CharField(max_length=30, blank=True, verbose_name='Имя'),
+ ),
+ migrations.AlterField(
+ model_name='profile',
+ name='last_name',
+ field=models.CharField(max_length=30, blank=True, verbose_name='Фамилия'),
+ ),
+ ]
diff --git a/accounts/models.py b/accounts/models.py
index 71a8362..b3688fa 100644
--- a/accounts/models.py
+++ b/accounts/models.py
@@ -1,3 +1,68 @@
+from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, AbstractUser, User
+from django.core.mail import send_mail
from django.db import models
+from datetime import datetime
-# Create your models here.
+class ProfileManager(BaseUserManager):
+ def _create_user(self, phone, email, password,
+ is_superuser, **extra_fields):
+ now = datetime.now()
+ if not phone:
+ raise ValueError('Телефон не может быть пустым')
+ email = self.normalize_email(email)
+ user = self.model(phone=phone, email=email,
+ is_active=True,
+ is_superuser=is_superuser, last_login=now,
+ date_joined=now, **extra_fields)
+ user.set_password(password)
+ user.save()
+ return user
+
+ def create_user(self, phone, email=None, password=None, **extra_fields):
+ return self._create_user(phone, email, password, False,
+ **extra_fields)
+
+ def create_superuser(self, phone, email, password, **extra_fields):
+ return self._create_user(phone, email, password, True,
+ **extra_fields)
+
+
+class Profile(AbstractBaseUser):
+ phone = models.CharField('Телефон', max_length=15, unique=True, db_index=True)
+ email = models.EmailField('Email', blank=False, null=False, default=None, unique=True, db_index=True)
+ first_name = models.CharField('Имя', max_length=30, blank=True)
+ last_name = models.CharField('Фамилия', max_length=30, blank=True)
+ date_joined = models.DateTimeField('Регистрация', default=datetime.now)
+ is_superuser = models.BooleanField('Админ', default=False)
+ is_active = models.BooleanField('Активный', default=True, db_index=True)
+
+ USERNAME_FIELD = 'phone'
+ REQUIRED_FIELDS = ['email']
+
+ objects = ProfileManager()
+
+ class Meta:
+ verbose_name = 'пользователь'
+ verbose_name_plural = 'пользователи'
+
+ def __str__(self):
+ return self.phone
+
+ def get_full_name(self):
+ return '{} {}'.format(self.first_name, self.last_name)
+
+ def get_short_name(self):
+ return self.first_name
+
+ def has_perm(self, perm, obj=None):
+ return True
+
+ def has_module_perms(self, app_label):
+ return True
+
+ @property
+ def is_staff(self):
+ return self.is_superuser
+
+ def email_user(self, subject, message, from_email=None, **kwargs):
+ send_mail(subject, message, from_email, [self.email], **kwargs)
\ No newline at end of file
diff --git a/accounts/urls.py b/accounts/urls.py
new file mode 100644
index 0000000..bb114ab
--- /dev/null
+++ b/accounts/urls.py
@@ -0,0 +1,10 @@
+from django.conf.urls import patterns, url
+from django.views.generic import RedirectView
+from .views import *
+
+urlpatterns = patterns('',
+ url(r'^$', RedirectView.as_view(
+ url='/', permanent=True), name='store_index'),
+ url(r'^login/$', LoginView.as_view(),
+ name='store_cart_detail'),
+ )
diff --git a/accounts/views.py b/accounts/views.py
index 91ea44a..b1a284d 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -1,3 +1,7 @@
from django.shortcuts import render
+from django.views.generic import FormView
+from .forms import *
-# Create your views here.
+class LoginView(FormView):
+ form_class = LoginForm
+ template_name = 'accounts/login.jinja'
\ No newline at end of file
diff --git a/api/views.py b/api/views.py
index f66c6da..01448a7 100644
--- a/api/views.py
+++ b/api/views.py
@@ -8,3 +8,5 @@ class CartSerializer(serializers.Serializer):
class CartViewSet(viewsets.ViewSet):
serializer_class = CartSerializer
+
+
diff --git a/batiskaf/jinja2.py b/batiskaf/jinja2.py
index bf04c63..392c4f1 100644
--- a/batiskaf/jinja2.py
+++ b/batiskaf/jinja2.py
@@ -1,3 +1,4 @@
+from bootstrapform_jinja.templatetags.bootstrap import *
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.urlresolvers import reverse
from batiskaf.jinja2_ext.thumbnails import thumbnail
@@ -17,4 +18,12 @@ def environment(**options):
env.filters['linebreaks'] = linebreaks
env.filters['thumbnail'] = thumbnail
env.filters['cart'] = cart
+ env.filters['bootstrap'] = bootstrap
+ env.filters['bootstrap_inline'] = bootstrap_inline
+ env.filters['bootstrap_horizontal'] = bootstrap_horizontal
+ env.filters['bootstrap_classes'] = bootstrap_classes
+ env.filters['is_checkbox'] = is_checkbox
+ env.filters['is_multiple_checkbox'] = is_multiple_checkbox
+ env.filters['is_radio'] = is_radio
+ env.filters['is_file'] = is_file
return env
diff --git a/batiskaf/settings.py b/batiskaf/settings.py
index dab9ff7..2adae5c 100644
--- a/batiskaf/settings.py
+++ b/batiskaf/settings.py
@@ -40,7 +40,11 @@ MESSAGE_TAGS = {
messages.SUCCESS: 'success',
}
-# Application definition
+AUTH_USER_MODEL = 'accounts.Profile'
+
+LOGIN_URL = '/account/login/'
+
+LOGOUT_URL = '/account/logout/'
INSTALLED_APPS = (
'django.contrib.admin',
@@ -53,9 +57,10 @@ INSTALLED_APPS = (
'django_extensions',
'rest_framework',
'easy_thumbnails',
- 'bootstrap3',
+ 'bootstrapform_jinja',
'batiskaf',
'main',
+ 'accounts',
'store',
)
@@ -116,13 +121,13 @@ SERVER_EMAIL = "admin@batiskaf.kz"
LANGUAGE_CODE = 'ru'
-TIME_ZONE = 'UTC'
+TIME_ZONE = 'Asia/Almaty'
USE_I18N = True
USE_L10N = True
-USE_TZ = True
+USE_TZ = False
# Static files (CSS, JavaScript, Images)
@@ -143,6 +148,16 @@ STATICFILES_DIRS = [
]
TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.jinja2.Jinja2',
+ 'DIRS': [
+ os.path.join(BASE_DIR, "batiskaf/templates/jinja2"),
+ #os.path.join(BASE_DIR, "batiskaf/templates/jinja2/bootstrapform"),
+ ],
+ 'OPTIONS': {
+ 'environment': 'batiskaf.jinja2.environment',
+ }
+ },
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "batiskaf/templates"), ],
@@ -160,13 +175,7 @@ TEMPLATES = [
)
},
},
- {
- 'BACKEND': 'django.template.backends.jinja2.Jinja2',
- 'DIRS': [os.path.join(BASE_DIR, "batiskaf/templates/jinja2"), ],
- 'OPTIONS': {
- 'environment': 'batiskaf.jinja2.environment',
- }
- },
+
]
BOOTSTRAP3 = {
diff --git a/batiskaf/templates/jinja2/accounts/login.jinja b/batiskaf/templates/jinja2/accounts/login.jinja
new file mode 100644
index 0000000..f51e4ed
--- /dev/null
+++ b/batiskaf/templates/jinja2/accounts/login.jinja
@@ -0,0 +1,4 @@
+{% extends 'base.jinja' %}
+{% block content %}
+{{ form }}
+{% endblock %}
diff --git a/batiskaf/templates/jinja2/bootstrapform/field.jinja b/batiskaf/templates/jinja2/bootstrapform/field.jinja
new file mode 100644
index 0000000..4b6366b
--- /dev/null
+++ b/batiskaf/templates/jinja2/bootstrapform/field.jinja
@@ -0,0 +1,82 @@
+{% macro render_field_checkbox(form, field, classes) -%}
+
+
+ {% if field.auto_id %}
+
+ {{ field|safe }} {{ field.label }}
+
+ {% endif %}
+ {% for error in field.errors %}
+
{{ error }}
+ {% endfor %}
+
+ {% if field.help_text %}
+
+ {{ field.help_text|safe }}
+
+ {% endif %}
+
+
+{%- endmacro %}
+
+{% macro render_field_radio(form, field, classes) -%}
+ {% if field.auto_id %}
+ {{ field.label }}
+ {% endif %}
+
+ {% for choice in field %}
+
+
+ {{ choice.tag()|safe }}
+ {{ choice.choice_label }}
+
+
+ {% endfor %}
+
+ {% for error in field.errors %}
+
{{ error }}
+ {% endfor %}
+
+ {% if field.help_text %}
+
+ {{ field.help_text|safe }}
+
+ {% endif %}
+
+{%- endmacro %}
+
+{% macro render_field_standard(form, field, classes) -%}
+ {% if field.auto_id %}
+ {{ field.label }}
+ {% endif %}
+
+
+ {{ field|safe }}
+
+ {% for error in field.errors %}
+
{{ error }}
+ {% endfor %}
+
+ {% if field.help_text %}
+
+ {{ field.help_text|safe }}
+
+ {% endif %}
+
+{%- endmacro %}
+
+
+ {% if field|is_checkbox %}
+
+ {{ render_field_checkbox(form, field, classes) }}
+
+ {% elif field|is_radio %}
+
+ {{ render_field_radio(form, field, classes) }}
+
+ {% else %}
+
+ {{ render_field_standard(form, field, classes) }}
+
+ {% endif %}
+
\ No newline at end of file
diff --git a/batiskaf/templates/jinja2/bootstrapform/form.jinja b/batiskaf/templates/jinja2/bootstrapform/form.jinja
new file mode 100644
index 0000000..102438a
--- /dev/null
+++ b/batiskaf/templates/jinja2/bootstrapform/form.jinja
@@ -0,0 +1,16 @@
+{% if form.non_field_errors() %}
+
+
×
+ {% for non_field_error in form.non_field_errors() %}
+ {{ non_field_error }}
+ {% endfor %}
+
+{% endif %}
+
+{% for field in form.hidden_fields() %}
+ {{ field|safe }}
+{% endfor %}
+
+{% for field in form.visible_fields() %}
+ {% include 'bootstrapform/field.jinja' %}
+{% endfor %}
diff --git a/batiskaf/templates/jinja2/bootstrapform/formset.jinja b/batiskaf/templates/jinja2/bootstrapform/formset.jinja
new file mode 100644
index 0000000..31c8bf0
--- /dev/null
+++ b/batiskaf/templates/jinja2/bootstrapform/formset.jinja
@@ -0,0 +1,13 @@
+{{ formset.management_form }}
+
+{% for form in formset %}
+
+ {% if classes.label == 'sr-only' %}
+
+ {% endif %}
+ {% include 'bootstrapform/form.jinja' %}
+ {% if classes.label == 'sr-only' %}
+
+ {% endif %}
+
+{% endfor %}
diff --git a/batiskaf/templates/jinja2/cart_detail.jinja b/batiskaf/templates/jinja2/cart_detail.jinja
index f6221de..5277dde 100644
--- a/batiskaf/templates/jinja2/cart_detail.jinja
+++ b/batiskaf/templates/jinja2/cart_detail.jinja
@@ -57,16 +57,67 @@
← Продолжить покупки
- Итого: {{ cart.total }} ₸
+ Итого: {{ cart.total }} ₸
Пересчитать
+
+
+
+ Оформление заказа
+
+
+
+
+
+
Данные доставки
+
+
+
+
+
+
+ {#
#}
+ {#
#}
+ {#
#}
+ {#
Доставка #}
+ {# #}
+ {#
#}
+ {# #}
+ {#
#}
+ {#
#}
+ {#
#}
+
+ {#
#}
+ {#
#}
+ {#
#}
+ {#
#}
+ {#
Способ оплаты #}
+ {# #}
+ {#
#}
+ {# Банковский платеж#}
+ {#
#}
+ {#
#}
+ {#
#}
+ {#
#}
{% else %}
diff --git a/batiskaf/templates/jinja2/order_ok.jinja b/batiskaf/templates/jinja2/order_ok.jinja
new file mode 100644
index 0000000..c6c8180
--- /dev/null
+++ b/batiskaf/templates/jinja2/order_ok.jinja
@@ -0,0 +1,12 @@
+{% extends 'base.jinja' %}
+{% block content %}
+
+
+
+{% endblock %}
+
diff --git a/batiskaf/templates/jinja2/order_print.jinja b/batiskaf/templates/jinja2/order_print.jinja
new file mode 100644
index 0000000..fe1d93f
--- /dev/null
+++ b/batiskaf/templates/jinja2/order_print.jinja
@@ -0,0 +1,36 @@
+
+
+ {{ date.strftime('%d.%m.%Y') }}
+
+
+
+
+ {{ order.pk }}
+
+
+ Поступ. в банк плат.
+ Списано со сч. плат.
+
+
+
+
+
+
+
+
+ ПЛАТЕЖНОЕ ПОРУЧЕНИЕ №2015
+
+
+ 08
+
+
+ Сумма прописью
+ Двести тысяч рублей 00 копеек
+
+
+
+ ИИН 7708654321
+ КПП 770801001
+
+
+
\ No newline at end of file
diff --git a/batiskaf/templates/jinja2/product.jinja b/batiskaf/templates/jinja2/product.jinja
index 08ea307..dff9b05 100644
--- a/batiskaf/templates/jinja2/product.jinja
+++ b/batiskaf/templates/jinja2/product.jinja
@@ -73,7 +73,6 @@
Добавить в корзину
-
diff --git a/batiskaf/urls.py b/batiskaf/urls.py
index 32959c9..f3445e1 100644
--- a/batiskaf/urls.py
+++ b/batiskaf/urls.py
@@ -1,5 +1,6 @@
from django.conf.urls import patterns, include, url
from django.contrib import admin
+from store.views import order_view, order_print
admin.site.site_header = 'Админка Batiskaf.kz'
admin.site.site_title = 'Админка Batiskaf.kz'
@@ -9,6 +10,13 @@ urlpatterns = patterns(
'',
url(r'^$', 'main.views.index',
name='index'),
+ url(r'^get_order_amount/$', 'store.views.get_order_amount'),
+ url(r'^order/(?P.+)/print/$', order_print,
+ name='store_order_print'),
+
+ url(r'^order/(?P.+)/$', order_view,
+ name='store_order_view'),
url(r'^store/', include('store.urls')),
+ url(r'^account/', include('accounts.urls')),
url(r'^admin2517_garpun/', include(admin.site.urls)),
)
diff --git a/static/js/_.js b/static/js/_.js
index 6b17872..e6c7d63 100644
--- a/static/js/_.js
+++ b/static/js/_.js
@@ -66,110 +66,143 @@ $(document).ready(function () {
});
-$('.product-min-thumbnails a').each(function(){
- var link = $(this);
- link.on('click', function(){
- $('.product-big-thumbnail img').prop('src', link.prop('href'));
- $('#product-big-img').attr('data-zoom-image', link.attr("data-big-url"));
- $('.zoomContainer').remove();
- $('#product-big-img').removeData('elevateZoom');
- $('#product-big-img').removeData('zoomImage');
- $('#product-big-img').elevateZoom({
- zoomType: "inner",
- cursor: "crosshair",
- lensFadeIn: 500,
- lensFadeOut: 500,
- easing : true
- });
+ $('.product-min-thumbnails a').each(function () {
+ var link = $(this);
+ link.on('click', function () {
+ $('.product-big-thumbnail img').prop('src', link.prop('href'));
+ $('#product-big-img').attr('data-zoom-image', link.attr("data-big-url"));
+ $('.zoomContainer').remove();
+ $('#product-big-img').removeData('elevateZoom');
+ $('#product-big-img').removeData('zoomImage');
+ $('#product-big-img').elevateZoom({
+ zoomType: "inner",
+ cursor: "crosshair",
+ lensFadeIn: 500,
+ lensFadeOut: 500,
+ easing: true
+ });
- // $('.product-big-thumbnail-container').trigger('zoom.destroy');
- // $('.product-big-thumbnail-container').zoom({url: link.attr("data-big-url")});
+ // $('.product-big-thumbnail-container').trigger('zoom.destroy');
+ // $('.product-big-thumbnail-container').zoom({url: link.attr("data-big-url")});
//$('a#product-big-image-url').prop('href', link.attr('data-big-url'))
return false;
})
-});
-$('#product-big-img').elevateZoom({
- zoomType: "inner",
- cursor: "crosshair",
- lensFadeIn: 500,
- lensFadeOut: 500,
- easing : true
-});
+ });
+ $('#product-big-img').elevateZoom({
+ zoomType: "inner",
+ cursor: "crosshair",
+ lensFadeIn: 500,
+ lensFadeOut: 500,
+ easing: true
+ });
//$('.product-big-thumbnail-container').zoom({url: $('#product-big-image-url').prop("href")});
-function create_cart_add_link(product_pk, count){
- return $.param.querystring('/store/cart/add/', 'pk=' + product_pk + '&count=' + count + '&next=' + window.location.pathname);
-}
-
-function selectVariation(value, index){
- var price = $('.product-variations-selecter option[value=' + value + ']').attr('data-price');
- var in_stock = $('.product-variations-selecter option[value=' + value + ']').attr('data-count');
- $('.product-detail-price-span').html(price);
- if (in_stock > 0){
- $(".product-count-selecter").selecter('destroy');
- $('.product-in-stock').show();
- $('.product-not-in-stock').hide();
- $('.product-count-selecter').html('');
- for (i=0; i');
- option.attr({ 'value': i+1 }).text((i+1) + ' шт.');
- $('.product-count-selecter').append(option);
+ function create_cart_add_link(product_pk, count) {
+ return $.param.querystring('/store/cart/add/', 'pk=' + product_pk + '&count=' + count + '&next=' + window.location.pathname);
+ }
+
+ function selectVariation(value, index) {
+ var price = $('.product-variations-selecter option[value=' + value + ']').attr('data-price');
+ var in_stock = $('.product-variations-selecter option[value=' + value + ']').attr('data-count');
+ $('.product-detail-price-span').html(price);
+ if (in_stock > 0) {
+ $(".product-count-selecter").selecter('destroy');
+ $('.product-in-stock').show();
+ $('.product-not-in-stock').hide();
+ $('.product-count-selecter').html('');
+ for (i = 0; i < in_stock; i++) {
+ var option = $(' ');
+ option.attr({'value': i + 1}).text((i + 1) + ' шт.');
+ $('.product-count-selecter').append(option);
+ }
+ $(".product-count-selecter").selecter({
+ callback: selectCount
+ });
+ selectCount(1, index);
+ $('#product-add-to-cart-link').prop('href',
+ create_cart_add_link($('.product-variations-selecter').val(),
+ $('.product-count-selecter').val()));
+ } else {
+ $('.product-count-selecter').selecter('destroy');
+ $('.product-in-stock').hide();
+ $('.product-not-in-stock').show();
}
- $(".product-count-selecter").selecter({
- callback: selectCount
- });
- selectCount(1, index);
+
+ }
+
+ $(".product-variations-selecter").selecter({
+ callback: selectVariation
+ });
+
+ function selectCount(value, index) {
+ var price = parseInt($('.product-detail-price-span').html());
+ $('.itogo-span').html(price * value);
$('#product-add-to-cart-link').prop('href',
create_cart_add_link($('.product-variations-selecter').val(),
$('.product-count-selecter').val()));
- }else{
- $('.product-count-selecter').selecter('destroy');
- $('.product-in-stock').hide();
- $('.product-not-in-stock').show();
}
-}
+ $(".product-count-selecter").selecter({
+ callback: selectCount
+ });
-$(".product-variations-selecter").selecter({
- callback: selectVariation
-});
-function selectCount(value, index){
- var price = parseInt($('.product-detail-price-span').html());
- $('.itogo-span').html(price*value);
- $('#product-add-to-cart-link').prop('href',
- create_cart_add_link($('.product-variations-selecter').val(),
- $('.product-count-selecter').val()));
-}
+ if ($('.product-count-selecter option').size() < 1) {
+ $('.product-in-stock').hide();
+ $('.product-not-in-stock').show();
-$(".product-count-selecter").selecter({
- callback: selectCount
-});
+ } else {
+ $(".product-count-selecter").selecter();
+ }
+ $('ul.messages li').each(function () {
+ var li = $(this);
+ var messageType = li.attr('data-type');
+ swal({
+ html: true,
+ type: messageType,
+ title: "OK!",
+ text: li.html()
+ });
+ });
-if ($('.product-count-selecter option').size() < 1){
- $('.product-in-stock').hide();
- $('.product-not-in-stock').show();
+ function selectCity(value, index) {
+ var city = $('#id_city').val();
+ var deliv = $('#id_deliv_type').val();
+ var cart_itogo = $('#cart-itogo').html();
+ var order_itogo = $('#order-itogo-amount');
-}else{
- $(".product-count-selecter").selecter();
-}
+ if (city && deliv) {
+ $.ajax({
+ method: "GET",
+ url: "/get_order_amount/",
+ data: {
+ city: city,
+ deliv: deliv,
-$('ul.messages li').each(function(){
- var li = $(this);
- var messageType = li.attr('data-type');
- swal({
- html: true,
- type: messageType,
- title: "OK!",
- text: li.html()
+ }
+ })
+ .done(function (msg) {
+ order_itogo.html(
+ parseFloat(msg.AmountPlusFSAmount) + parseFloat(cart_itogo)
+ );
+ });
+
+ } else {
+ order_itogo.html(cart_itogo);
+ }
+ }
- });
-});
+ $('#id_city').selecter({
+ callback: selectCity
+ });
+ $('#id_deliv_type').selecter({
+ callback: selectCity
+ });
});
\ No newline at end of file
diff --git a/static/less/_.css b/static/less/_.css
index 9cc24cf..ddf463d 100644
--- a/static/less/_.css
+++ b/static/less/_.css
@@ -949,3 +949,9 @@ ul.messages {
padding-top: 20px;
border-top: 1px #ddd solid;
}
+.order-data .radio {
+ margin-left: 15px;
+}
+#order-itogo-amount {
+ font-size: 20px;
+}
diff --git a/static/less/_.less b/static/less/_.less
index 062f19d..6fd773f 100644
--- a/static/less/_.less
+++ b/static/less/_.less
@@ -790,4 +790,11 @@ ul.messages {
margin-top: 40px;
padding-top: 20px;
border-top: 1px #ddd solid;
+}
+.order-data .radio{
+ margin-left: 15px;
+}
+
+#order-itogo-amount{
+ font-size: 20px;
}
\ No newline at end of file
diff --git a/store/alemtat.py b/store/alemtat.py
new file mode 100644
index 0000000..16cc4e2
--- /dev/null
+++ b/store/alemtat.py
@@ -0,0 +1,69 @@
+import requests
+
+
+class AlemTat(object):
+ COUNTRY_CODE = '0001'
+ CITY_CODE = '000003'
+ API_KEY = '677a8773-c647-4b8f-8968-32a67d55e0d3'
+ CONTRACT = '05828/ИМ'
+
+ def _build_url(self, url):
+ # url = url.replace('\{ext\}', API_KEY)
+ retval = url
+ if '?' in url:
+ retval = url + '&ApiKey={}'.format(self.API_KEY)
+ else:
+ retval = url + '?ApiKey={}'.format(self.API_KEY)
+ return retval
+
+ def get_cities(self):
+ url = self._build_url(
+ 'http://api.alemtat.kz/web/{ext}/Catalog/getCitiesByCountry?CountryLocalCode={}'.format(self.COUNTRY_CODE, ext=self.API_KEY))
+ r = requests.get(url)
+ return r.json()
+
+ def get_cities_tuple(self):
+ retval = map(lambda cities: (cities['LocalCode'], '{} - {}'.format(cities['LocalityName'].title(), cities[
+ 'Region'].capitalize())), self.get_cities())
+ return tuple(retval)
+
+ def get_services(self):
+ url = self._build_url(
+ 'http://api.alemtat.kz/web/{ext}/Catalog/getServices'.format(ext=self.API_KEY))
+ r = requests.get(url)
+ return r.json()
+
+ def get_services_tuple(self):
+ retval = map(lambda services: (services['LocalCode'], services['Name'],), self.get_services())
+ return tuple(retval)
+
+ # def get_services_tuple(self):
+ # retval = map(lambda cities: (cities['LocalCode'], '{} - {}'.format(cities['LocalityName'].title(), cities[
+ # 'Region'].capitalize())), self.get_cities())
+ # return tuple(retval)
+
+ def get_amount(self, to, places, weight, service):
+ url = self._build_url(
+ 'http://api.alemtat.kz/web/{ext}/Calc/getAmount'.format(ext=self.API_KEY))
+ post_data = dict(
+ FromCountryCode=self.COUNTRY_CODE,
+ FromLocalCode=self.CITY_CODE,
+ ToCountryCode=self.COUNTRY_CODE,
+ ToLocalCode=to,
+ ServiceLocalCode=service,
+ Places=places,
+ Weight=weight,
+ Contract=self.CONTRACT,
+ )
+ r = requests.post(url, data=post_data)
+ return r.json()
+
+
+def alemtat_get_cities_tuple():
+ a = AlemTat()
+ return a.get_cities_tuple()
+
+def alemtat_get_services_tuple():
+ a = AlemTat()
+ return a.get_services_tuple()
+
diff --git a/store/cart.py b/store/cart.py
index 5d5741e..e3d740c 100644
--- a/store/cart.py
+++ b/store/cart.py
@@ -21,6 +21,7 @@ class Cart(object):
items = []
json_items = []
total = 0
+ weight = 0.1
items_format = {'items': [], 'total': 0}
def __init__(self, request):
@@ -37,11 +38,13 @@ class Cart(object):
def deserialize_items(self):
for j in self.json_items['items']:
+ variation = ProductVariation.objects.get(
+ pk=j['product'])
item = CartItem(
- ProductVariation.objects.get(
- pk=j['product']), j['count'], j['id'])
+ variation, j['count'], j['id'])
self.items.append(item)
self.total += int(item.subtotal)
+ self.weight += variation.weight
return self
def serialize_items(self):
diff --git a/store/forms.py b/store/forms.py
new file mode 100644
index 0000000..f3c4182
--- /dev/null
+++ b/store/forms.py
@@ -0,0 +1,9 @@
+from django import forms
+from store.alemtat import alemtat_get_services_tuple
+from store.models import OrderData
+
+class OrderForm(forms.ModelForm):
+ class Meta:
+ model = OrderData
+ fields = ['first_name', 'last_name', 'phone', 'email', 'city', 'address', 'deliv_type']
+
diff --git a/store/migrations/0013_auto_20150611_2306.py b/store/migrations/0013_auto_20150611_2306.py
new file mode 100644
index 0000000..b9a979d
--- /dev/null
+++ b/store/migrations/0013_auto_20150611_2306.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('store', '0012_category_priority'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='OrderData',
+ fields=[
+ ('id', models.AutoField(serialize=False, auto_created=True, primary_key=True, verbose_name='ID')),
+ ('first_name', models.CharField(max_length=64, verbose_name='Имя')),
+ ('last_name', models.CharField(max_length=64, verbose_name='Фамилия')),
+ ('phone', models.CharField(max_length=15, verbose_name='Телефон')),
+ ('email', models.EmailField(max_length=254, verbose_name='Email')),
+ ('city', models.CharField(choices=[('003409', '017 Квартал - Южно-казахстанская область'), ('003291', '12 Декабря - Алматинская область'), ('002958', '19 Ый Км - Алматинская область'), ('003910', '41 Разъезд - Актюбинская область'), ('007560', 'Абаил - Южно-казахстанская область'), ('000259', 'Абай - Карагандинская область'), ('003000', 'Абай - Южно-казахстанская область'), ('002657', 'Абай - Алматинская область'), ('002776', 'Аблакетка - Восточно-казахстанская область'), ('008271', 'Авангард - Атырауская область'), ('000320', 'Ават - Алматинская область'), ('002800', 'Агадырь - Карагандинская область'), ('003927', 'Агроном - Северо-казахстанская область'), ('007248', 'Адаевка - Костанайская область'), ('007283', 'Адилет - Мангистауская область'), ('006728', 'Ажар - Южно-казахстанская область'), ('002892', 'Ажар - Алматинская область'), ('006921', 'Азат - Акмолинская область'), ('008492', 'Азатлык - Южно-казахстанская область'), ('002931', 'Азаттык - Южно-казахстанская область'), ('007298', 'Айгеш - Южно-казахстанская область'), ('000327', 'Айдабуль - Акмолинская область'), ('007562', 'Айдарлы - Алматинская область'), ('002887', 'Айтей - Алматинская область'), ('003253', 'Айтеке Би - Кызылординская область'), ('002611', 'Айша Биби - Жамбыльская область'), ('007927', 'Ак Жайык - Атырауская область'), ('008421', 'Акай - Кызылординская область'), ('006808', 'Акалтын - Южно-казахстанская область'), ('008156', 'Акбакай - Жамбыльская область'), ('006790', 'Акбастау - Алматинская область'), ('003715', 'Акбулак - Южно-казахстанская область'), ('007314', 'Акбулак - Алматинская область'), ('000321', 'Акбулым - Жамбыльская область'), ('008452', 'Акжазык - Алматинская область'), ('007000', 'Акжайык - Западно-казахстанская область'), ('002677', 'Акжал - Карагандинская область'), ('003102', 'Акжар - Восточно-казахстанская область'), ('007186', 'Акжар - Атырауская область'), ('002684', 'Акжар - Алматинская область'), ('006741', 'Акжар - Южно-казахстанская область'), ('002973', 'Акжарма - Кызылординская область'), ('003164', 'Акжол - Карагандинская область'), ('008586', 'Аккаин - Алматинская область'), ('008205', 'Аккайнар - Восточно-казахстанская область'), ('002812', 'Аккент - Алматинская область'), ('003190', 'Аккистау - Атырауская область'), ('007151', 'Акколь - Атырауская область'), ('007978', 'Акколь - Павлодарская область'), ('006904', 'Акколь - Жамбыльская область'), ('000229', 'Акколь - Акмолинская область'), ('002969', 'Акку - Павлодарская область'), ('003377', 'Аккум - Кызылординская область'), ('007998', 'Аккыстау - Атырауская область'), ('002862', 'Акмол - Акмолинская область'), ('008069', 'Акмолак - Жанатурмыс - Жамбыльская область'), ('007296', 'Акпан - Карагандинская область'), ('008062', 'Аксай - Алматинская область'), ('000009', 'Аксай - Западно-казахстанская область'), ('007701', 'Аксай-2 - Западно-казахстанская область'), ('003007', 'Аксенгир - Алматинская область'), ('008141', 'Аксу - Восточно-казахстанская область'), ('007899', 'Аксу - Южно-казахстанская область'), ('008556', 'Аксу - Западно-казахстанская область'), ('000198', 'Аксу - Павлодарская область'), ('008367', 'Аксу - Кызылординская область'), ('008575', 'Аксу - 1 - Павлодарская область'), ('006928', 'Аксу - 2 - Павлодарская область'), ('008234', 'Аксу 5 - Павлодарская область'), ('003178', 'Аксуат - Восточно-казахстанская область'), ('007273', 'Аксуат - Западно-казахстанская область'), ('008106', 'Аксуат - Северо-казахстанская область'), ('003302', 'Аксу-Аюлы - Карагандинская область'), ('002620', 'Аксукент - Южно-казахстанская область'), ('006785', 'Актас - Карагандинская область'), ('002698', 'Актас - Алматинская область'), ('000350', 'Актау - Карагандинская область'), ('000008', 'Актау - Мангистауская область'), ('002749', 'Актерек - Алматинская область'), ('000011', 'Актобе - Актюбинская область'), ('006753', 'Актобе - Алматинская область'), ('002968', 'Актогай - Павлодарская область'), ('002742', 'Актогай - Восточно-казахстанская область'), ('008187', 'Актогай - Жамбыльская область'), ('003737', 'Актогай - Карагандинская область'), ('003687', 'Акшабулак - Кызылординская область'), ('007561', 'Акши - Алматинская область'), ('007812', 'Акши - Восточно-казахстанская область'), ('002948', 'Акшукур - Мангистауская область'), ('002618', 'Алатау - Алматинская область'), ('007213', 'Алатау - Южно-казахстанская область'), ('007790', 'Алатауский - Алматинская область'), ('008223', 'Алга - Атырауская область'), ('000139', 'Алга - Актюбинская область'), ('008579', 'Алгабас - Восточно-казахстанская область'), ('002760', 'Алгабас - Алматинская область'), ('003581', 'Алгановка - Костанайская область'), ('003575', 'Александровка - Акмолинская область'), ('006850', 'Али - Алматинская область'), ('007102', 'Алибекмола - Актюбинская область'), ('007679', 'Алма-Арасан - Алматинская область'), ('007840', 'Алмалы - Алматинская область'), ('007694', 'Алмалы - Атырауская область'), ('002765', 'Алмалыбак - Алматинская область'), ('008339', 'Алмалык - Алматинская область'), ('008343', 'Алматинский - Атырауская область'), ('000003', 'Алматы - '), ('003921', 'Алмирек - Алматинская область'), ('008247', 'Алтын Бесик - Алматинская область'), ('002462', 'Алтынды - Актюбинская область'), ('003498', 'Алтынколь - Алматинская область'), ('007247', 'Алтынсарина - Костанайская область'), ('006864', 'Альжан - Актюбинская область'), ('003455', 'Альмерек - Алматинская область'), ('007817', 'Альмирек - Талгарский'), ('007696', 'Амангельды - Западно-казахстанская область'), ('008259', 'Амангельды - Жамбыльская область'), ('003479', 'Амангельды - Костанайская область'), ('002894', 'Анкистау - Атырауская область'), ('003543', 'Антоновка - Северо-казахстанская область'), ('007237', 'Аралколь - Костанайская область'), ('003469', 'Аралкум - Кызылординская область'), ('000246', 'Аральск - Кызылординская область'), ('007326', 'Арка - Костанайская область'), ('000199', 'Аркалык - Костанайская область'), ('002949', 'Аршалы - Акмолинская область'), ('002901', 'Арысь - Южно-казахстанская область'), ('003186', 'Аса - Жамбыльская область'), ('007722', 'Аса - Жамбыльская область'), ('008307', 'Асан - Западно-казахстанская область'), ('003406', 'Асаново - Северо-казахстанская область'), ('002825', 'Асем - Тау - Алматинская область'), ('007076', 'Асса - Жамбыльская область'), ('000006', 'Астана - '), ('003089', 'Астраханка - Акмолинская область'), ('003354', 'Асу Булак - Восточно-казахстанская область'), ('002789', 'Асыката - Южно-казахстанская область'), ('003242', 'Асыл Ата - Южно-казахстанская область'), ('002663', 'Атакент - Южно-казахстанская область'), ('002945', 'Атамекен - Мангистауская область'), ('003263', 'Атасу - Карагандинская область'), ('003028', 'Аташ - Мангистауская область'), ('000078', 'Атбасар - Акмолинская область'), ('000004', 'Атырау - Атырауская область'), ('002867', 'Аулиеколь - Костанайская область'), ('003001', 'Ауэзов - Восточно-казахстанская область'), ('007098', 'Ахай - Кызылординская область'), ('007201', 'Ахмет - Карагандинская область'), ('006849', 'Ахмирова - Восточно-казахстанская область'), ('003374', 'Ахчи - Алматинская область'), ('003643', 'Ашибулак - Кызылординская область'), ('007435', 'Ашибулак - Алматинская область'), ('002855', 'Ашикур - Восточно-казахстанская область'), ('003107', 'Ащибулак - Алматинская область'), ('008471', 'Ащиголь - Северо-казахстанская область'), ('007819', 'Ащыбулак - Южно-казахстанская область'), ('003860', 'Аэропорт - Кокшетауская область'), ('000261', 'Аягоз - Восточно-казахстанская область'), ('007442', 'Аякоз - Восточно-казахстанская область'), ('003288', 'Б.Мамышулы - Жамбыльская область'), ('003062', 'Баганашил - Алматинская область'), ('008193', 'Бадалина - Актюбинская область'), ('002699', 'Бадам - Южно-казахстанская область'), ('003180', 'Бадамша - Актюбинская область'), ('000227', 'Бает - '), ('003806', 'Баик - Алматинская область'), ('000156', 'Байганин - Актюбинская область'), ('008522', 'Байет - Павлодарская область'), ('008072', 'Байзак - Жамбыльская область'), ('006914', 'Байканшино - Акмолинская область'), ('002803', 'Байкенже - Кызылординская область'), ('000265', 'Байконыр - Кызылординская область'), ('008281', 'Байсеит - Алматинская область'), ('002702', 'Байсент - Алматинская область'), ('000180', 'Байсерке - Алматинская область'), ('002712', 'Байтерек - Алматинская область'), ('000329', 'Баканас - Алматинская область'), ('007005', 'Бактыбай - Алматинская область'), ('007937', 'Бакудык - Мангистауская область'), ('007762', 'Балатопар - Алматинская область'), ('006951', 'Балгуль - Кызылординская область'), ('003073', 'Балкашено - Акмолинская область'), ('002682', 'Балпык Би - Алматинская область'), ('002643', 'Балтабай - Алматинская область'), ('000106', 'Балхаш - Карагандинская область'), ('007769', 'Балхашино - Акмолинская область'), ('002975', 'Балыкты Юко - Южно-казахстанская область'), ('007310', 'Балыкшы - Южно-казахстанская область'), ('003163', 'Балыкшы - Атырауская область'), ('002734', 'Баранколь - Мангистауская область'), ('003414', 'Барвиновка - Костанайская область'), ('007395', 'Барлык - Алматинская область'), ('003805', 'Басибекова - Алматинская область'), ('002676', 'Баскудык - Мангистауская область'), ('002746', 'Бастобе - Алматинская область'), ('008197', 'Басши - Алматинская область'), ('003196', 'Батакара - Карагандинская область'), ('006986', 'Батурова - Жамбыльская область'), ('003415', 'Бауманская - Северо-казахстанская область'), ('000098', 'Баутино - Мангистауская область'), ('007361', 'Бахты - Восточно-казахстанская область'), ('003006', 'Бахтыбай - Алматинская область'), ('003733', 'Бахытбай - Алматинская область'), ('007022', 'Башмашное - Павлодарская область'), ('007002', 'Баянаул - Павлодарская область'), ('002941', 'Баянбул - Павлодарская область'), ('006926', 'Баяндай - Алматинская область'), ('003865', 'Баянды - Мангистауская область'), ('007984', 'Бейбарс-1 - Жамбыльская область'), ('006996', 'Бейнеу - Мангистауская область'), ('000138', 'Бейнеу - Костанайская область'), ('008103', 'Бейскайнар - Алматинская область'), ('006988', 'Бекболат - Алматинская область'), ('003119', 'Бектобе - Жамбыльская область'), ('006956', 'Белбулак - Мангистауская область'), ('008347', 'Белбулык - Алматинская область'), ('007390', 'Белек - Алматинская область'), ('008559', 'Белек - Западно-казахстанская область'), ('007305', 'Белес - Западно-казахстанская область'), ('002740', 'Белколь - Кызылординская область'), ('007511', 'Белкуль - Кызылординская область'), ('007953', 'Белокаменка - Восточно-казахстанская область'), ('002574', 'Белоусовка - Восточно-казахстанская область'), ('007246', 'Бельбулак - Мангистауская область'), ('007620', 'Бельбулак - Алматинская область'), ('003663', 'Белькуль - Кызылординская область'), ('006963', 'Березовка - Западно-казахстанская область'), ('003262', 'Березовский - Восточно-казахстанская область'), ('000355', 'Береке - Алматинская область'), ('008582', 'Береке - Атырауская область'), ('002680', 'Бериктас - Алматинская область'), ('006971', 'Берлик - Алматинская область'), ('002992', 'Бесагаш - Алматинская область'), ('008109', 'Бесарык - Кызылординская область'), ('003566', 'Бескайнар - Алматинская область'), ('003418', 'Бескарагай - Восточно-казахстанская область'), ('002695', 'Бесколь - Алматинская область'), ('006962', 'Бесколь - Северо-казахстанская область'), ('006798', 'Бескуль - Кызылординская область'), ('002748', 'Бесмойнак - Алматинская область'), ('007494', 'Бестамак - Актюбинская область'), ('008130', 'Бестерек - Восточно-казахстанская область'), ('006847', 'Беткайнар - Жамбыльская область'), ('008399', 'Бижанова - Алматинская область'), ('008330', 'Биксанова - Алматинская область'), ('007080', 'Биринши Мамыр - Южно-казахстанская область'), ('003385', 'Бирлесу-Енбе - Жамбыльская область'), ('008050', 'Бирлик - Алматинская область'), ('008204', 'Бирлик - Западно-казахстанская область'), ('003725', 'Бирлик - Жамбыльская область'), ('003781', 'Бирлик - Мангистауская область'), ('002666', 'Бирлик - Атырауская область'), ('007833', 'Бирлик - Павлодарская область'), ('003866', 'Бишкуль - Северо-казахстанская область'), ('003820', 'Благовещенка - Северо-казахстанская область'), ('003015', 'Бобровка - Восточно-казахстанская область'), ('007391', 'Богословское - Актюбинская область'), ('002463', 'Бодалина - Актюбинская область'), ('007362', 'Бозайгыр - Акмолинская область'), ('007401', 'Бозой - Актюбинская область'), ('007626', 'Бозшаколь - Павлодарская область'), ('007793', 'Болек - Алматинская область'), ('003815', 'Болпык Би - Алматинская область'), ('000252', 'Большая Владимировка - Акмолинская область'), ('003500', 'Большая Малышка - Северо-казахстанская область'), ('007452', 'Большая Чураковка - Костанайская область'), ('003175', 'Большенарым - Восточно-казахстанская область'), ('007569', 'Большой Дихан - Алматинская область'), ('007887', 'Большой Чепан - Алматинская область'), ('003280', 'Боралдай - Алматинская область'), ('006883', 'Боранколь - Атырауская область'), ('002925', 'Боранкул - Мангистауская область'), ('000270', 'Боровое - Кокшетауская область'), ('007040', 'Боровское - Костанайская область'), ('002590', 'Бородулиха - Восточно-казахстанская область'), ('000172', 'Боролдай - Алматинская область'), ('008035', 'Бостан - Мангистауская область'), ('002857', 'Ботакара - Карагандинская область'), ('007228', 'Бугровое - Северо-казахстанская область'), ('007786', 'Буденное - Северо-казахстанская область'), ('007369', 'Буденовское - Южно-казахстанская область'), ('002983', 'Булаево - Северо-казахстанская область'), ('002849', 'Булаксай - Акмолинская область'), ('007269', 'Булакты - Алматинская область'), ('008479', 'Буландинский - Акмолинская область'), ('007194', 'Булыкты - Алматинская область'), ('003689', 'Бура - Алматинская область'), ('002711', 'Бурабай - '), ('006752', 'Буран - Алматинская область'), ('008228', 'Бурлин - Западно-казахстанская область'), ('003549', 'Бурное - Жамбыльская область'), ('002832', 'Бурундай - Алматинская область'), ('007533', 'Бурыл - Жамбыльская область'), ('003476', 'Бухтарма - Восточно-казахстанская область'), ('003773', 'Быструха - Восточно-казахстанская область'), ('008449', 'Валерьяновка - Костанайская область'), ('002778', 'Варваринка - Костанайская область'), ('007693', 'Варваринское - Костанайская область'), ('007508', 'Вахтовый - Атырауская область'), ('007257', 'Вахтовый - Восточно-казахстанская область'), ('007530', 'Венгерка - Атырауская область'), ('008377', 'Верхнеберезовский - Восточно-казахстанская область'), ('003197', 'Верх-Уба - Восточно-казахстанская область'), ('008363', 'Веселая Роща - Павлодарская область'), ('002829', 'Веселовка - Восточно-казахстанская область'), ('007709', 'Весовая - Карагандинская область'), ('007669', 'Винный - Восточно-казахстанская область'), ('008315', 'Вишневка - Акмолинская область'), ('003830', 'Водников - Атырауская область'), ('007412', 'Водникова - Атырауская область'), ('006973', 'Волгоградское - Костанайская область'), ('007437', 'Ворошиловка - Южно-казахстанская область'), ('008553', 'Восток - Костанайская область'), ('007042', 'Восточный - Восточно-казахстанская область'), ('003837', 'Восточный Квартал - Восточно-казахстанская область'), ('008074', 'Восход - Восточно-казахстанская область'), ('003905', 'Г.Муратбаев - Кызылординская область'), ('002895', 'Гагарина - Алматинская область'), ('002633', 'Галаева - Алматинская область'), ('003902', 'Галицкое - Павлодарская область'), ('002772', 'Ганюшкино - Атырауская область'), ('003201', 'Гвардейский - Жамбыльская область'), ('007495', 'Геолог - Атырауская область'), ('007202', 'Геологический - Карагандинская область'), ('003176', 'Георгиевка - Восточно-казахстанская область'), ('008045', 'Геофизик - Костанайская область'), ('006851', 'Герасимовка - Восточно-казахстанская область'), ('003673', 'Гидролизный - Южно-казахстанская область'), ('003856', 'Глазуновка - Костанайская область'), ('003153', 'Гликовка - Костанайская область'), ('002799', 'Глубокое - Восточно-казахстанская область'), ('000354', 'Головацкого - Алматинская область'), ('003618', 'Горное - Северо-казахстанская область'), ('002899', 'Горный - Алматинская область'), ('006772', 'Горный Гигант - Алматинская область'), ('008142', 'Горняк - Восточно-казахстанская область'), ('007761', 'Горняцкий - Костанайская область'), ('003624', 'Гранитный - Восточно-казахстанская область'), ('008176', 'Гребовка - Костанайская область'), ('008342', 'Гродикова - Жамбыльская область'), ('003728', 'Гульдала - Алматинская область'), ('003896', 'Дамса - Акмолинская область'), ('007385', 'Даринск - Западно-казахстанская область'), ('006695', 'Дарьинское - Западно-казахстанская область'), ('008190', 'Датулы - Западно-казахстанская область'), ('002703', 'Даулет - Мангистауская область'), ('006837', 'Даут - Северо-казахстанская область'), ('008325', 'Дегерес - Алматинская область'), ('003388', 'Денисовка - Костанайская область'), ('008580', 'Дербес - Южно-казахстанская область'), ('007617', 'Дербисек - Южно-казахстанская область'), ('002804', 'Державинск - Акмолинская область'), ('002914', 'Деркул - Западно-казахстанская область'), ('007567', 'Дермене - Южно-казахстанская область'), ('008318', 'Джалтыр - Акмолинская область'), ('003470', 'Джамбул - Южно-казахстанская область'), ('008496', 'Джамбул - Западно-казахстанская область'), ('003924', 'Джусалы - Кызылординская область'), ('007254', 'Дилдабекова - Южно-казахстанская область'), ('008369', 'Докучаево - Северо-казахстанская область'), ('002721', 'Долан - Алматинская область'), ('002690', 'Долинка - Карагандинская область'), ('007451', 'Дон - Актюбинская область'), ('008527', 'Донецк - Западно-казахстанская область'), ('002624', 'Дорбаза - Южно-казахстанская область'), ('008536', 'Доскей - Карагандинская область'), ('003855', 'Доскей Ауылы - Карагандинская область'), ('007240', 'Досор - '), ('000228', 'Доссор - Атырауская область'), ('006805', 'Достык - Западно-казахстанская область'), ('003508', 'Достык - Южно-казахстанская область'), ('008438', 'Достык - Алматинская область'), ('002796', 'Достык - Алматинская область'), ('003103', 'Дружба - Алматинская область'), ('008175', 'Дружба - Алматинская область'), ('006722', 'Дружба - Костанайская область'), ('007007', 'Дружба - Северо-казахстанская область'), ('006717', 'Дубовка - Карагандинская область'), ('003322', 'Дунга - Мангистауская область'), ('007431', 'Егиндыколь - Акмолинская область'), ('007534', 'Еленовка - Акмолинская область'), ('006697', 'Елизаветинка - Костанайская область'), ('002926', 'Елисентай - Алматинская область'), ('002631', 'Елтай - Алматинская область'), ('003348', 'Ельтай - Алматинская область'), ('007895', 'Енбекский - Актюбинская область'), ('008402', 'Енбекши - Алматинская область'), ('007138', 'Енбекши - Атырауская область'), ('007051', 'Енкес - Южно-казахстанская область'), ('007200', 'Енсек - Южно-казахстанская область'), ('002706', 'Ералиев - Южно-казахстанская область'), ('000274', 'Ерейментау - Акмолинская область'), ('007596', 'Еркен - Алматинская область'), ('002671', 'Еркин - Алматинская область'), ('008397', 'Еркул - Западно-казахстанская область'), ('002672', 'Ерменсай - Алматинская область'), ('006929', 'Ерментау - '), ('007088', 'Есбол - Атырауская область'), ('007082', 'Есентаево - Южно-казахстанская область'), ('007611', 'Есентай - Алматинская область'), ('007352', 'Есет Батыр - Актюбинская область'), ('000100', 'Есик - Алматинская область'), ('002636', 'Есиль - Акмолинская область'), ('008407', 'Ескельды - Алматинская область'), ('003868', 'Жабагылы - Южно-казахстанская область'), ('002848', 'Жабыл - Жамбыльская область'), ('007216', 'Жагабулак - Актюбинская область'), ('007265', 'Жаилма - Костанайская область'), ('003625', 'Жайков - Алматинская область'), ('008588', 'Жайлау - Алматинская область'), ('008083', 'Жайпак - Алматинская область'), ('000165', 'Жайрем - Карагандинская область'), ('003541', 'Жайсан - Жамбыльская область'), ('002807', 'Жаксы - Акмолинская область'), ('007327', 'Жаксыкылыш - Кызылординская область'), ('003300', 'Жаксын - Акмолинская область'), ('003181', 'Жалагаш - Кызылординская область'), ('007829', 'Жалаево - Западно-казахстанская область'), ('008040', 'Жаланаш - Алматинская область'), ('002638', 'Жалаулы - Алматинская область'), ('007251', 'Жалгамыс - Алматинская область'), ('007609', 'Жалпак - Джамбульская обл.'), ('002767', 'Жалпаксай - Алматинская область'), ('007488', 'Жалпактал - Западно-казахстанская область'), ('007674', 'Жалпактобе - Жамбыльская область'), ('003205', 'Жалтыр - Акмолинская область'), ('003586', 'Жалтырколь - Костанайская область'), ('003398', 'Жамбыл - Алматинская область'), ('003851', 'Жамбыл - Южно-казахстанская область'), ('003621', 'Жана Арка - Карагандинская область'), ('003168', 'Жана Базар - Южно-казахстанская область'), ('007690', 'Жана Даур - Алматинская область'), ('007683', 'Жана Кала - Павлодарская область'), ('007784', 'Жана Кийма - Акмолинская область'), ('006819', 'Жана Куат - Алматинская область'), ('003051', 'Жанааул - Павлодарская область'), ('007174', 'Жанабулак - Западно-казахстанская область'), ('002822', 'Жанагурмыс - Алматинская область'), ('008258', 'Жанадария - Кызылординская область'), ('003081', 'Жанажол - Актюбинская область'), ('008425', 'Жанакала - Западно-казахстанская область'), ('003755', 'Жанаконыс - Актюбинская область'), ('002874', 'Жанакорган - Кызылординская область'), ('008401', 'Жанакурылыс - Жамбыльская область'), ('002984', 'Жаналык - Алматинская область'), ('000080', 'Жанаозен - Мангистауская область'), ('008082', 'Жанаталап - Алматинская область'), ('007580', 'Жанаталап - Южно-казахстанская область'), ('000300', 'Жанатас - Жамбыльская область'), ('003876', 'Жанатурмыс - Алматинская область'), ('002940', 'Жангала - Западно-казахстанская область'), ('007054', 'Жангаш - Кызылординская область'), ('003011', 'Жангиз Тобе - Восточно-казахстанская область'), ('008237', 'Жангизтобе - Восточно-казахстанская область'), ('002752', 'Жандосова - Алматинская область'), ('003120', 'Жанибек - Западно-казахстанская область'), ('000331', 'Жансугурова - Алматинская область'), ('003928', 'Жапек Батыра - Алматинская область'), ('008039', 'Жаркамыс - Актюбинская область'), ('000275', 'Жаркент - Алматинская область'), ('003250', 'Жарма - Восточно-казахстанская область'), ('000118', 'Жармухамбет - Алматинская область'), ('008013', 'Жармухамед - Алматинская область'), ('008037', 'Жарсуат - Западно-казахстанская область'), ('003362', 'Жарты-Тобе - Южно-казахстанская область'), ('006848', 'Жарык - Актюбинская область'), ('007091', 'Жас Кешу - Южно-казахстанская область'), ('007882', 'Жастар - Алматинская область'), ('008358', 'Жасуркен - Жамбыльская область'), ('003843', 'Жаугашты - Алматинская область'), ('002679', 'Ждановка - Костанайская область'), ('007414', 'Жезгазган - Карагандинская область'), ('007500', 'Жезды - Карагандинская область'), ('000064', 'Жезказган - Карагандинская область'), ('007415', 'Жезказган - Карагандинская область'), ('000140', 'Жезкент - Восточно-казахстанская область'), ('003596', 'Желаево - Западно-казахстанская область'), ('000185', 'Железинка - Павлодарская область'), ('007230', 'Железново - Западно-казахстанская область'), ('002644', 'Железнодорожное - Костанайская область'), ('003788', 'Железнодорожный - Акмолинская область'), ('008490', 'Железнорудная - Костанайская область'), ('003355', 'Жем - Актюбинская область'), ('007910', 'Жемисты - Южно-казахстанская область'), ('008561', 'Жен - Актюбинская область'), ('008210', 'Жепек Батыра - Алматинская область'), ('006985', 'Жеркарон - Карагандинская область'), ('003167', 'Жетекши - Павлодарская область'), ('003140', 'Жетибай - Мангистауская область'), ('003225', 'Жетиген - Жамбыльская область'), ('007993', 'Жетиген - Алматинская область'), ('000241', 'Жетикара - Костанайская область'), ('002726', 'Жетыбай - Мангистауская область'), ('002741', 'Жетыген - Алматинская область'), ('000028', 'Жетысай - Южно-казахстанская область'), ('002880', 'Жибек Жолы - Южно-казахстанская область'), ('008232', 'Жибек Жолы - Акмолинская область'), ('007929', 'Жигерген - Южно-казахстанская область'), ('008097', 'Жинишке - Актюбинская область'), ('003888', 'Жирен Копа - Актюбинская область'), ('006943', 'Жоламан - Восточно-казахстанская область'), ('003800', 'Жолбарыс - Алматинская область'), ('008186', 'Жолкудук - Павлодарская область'), ('002861', 'Жолпактобе - Жамбыльская область'), ('003590', 'Жолымбет - Акмолинская область'), ('003211', 'Жосалы - Кызылординская область'), ('002357', 'Жулдыз - Южно-казахстанская область'), ('007454', 'Жумекен - Атырауская область'), ('008550', 'Жумыскер - Атырауская область'), ('002852', 'Жумыскер - Атырауская область'), ('008378', 'Жусандай - Западно-казахстанская область'), ('007225', 'Жыланды - Атырауская область'), ('000356', 'Жылга - Южно-казахстанская область'), ('008385', 'Жылыой - Атырауская область'), ('002836', 'Жымпиты - Западно-казахстанская область'), ('008486', 'Зааятское - Костанайская область'), ('003831', 'Заводской - Акмолинская область'), ('006942', 'Загородный - Восточно-казахстанская область'), ('000284', 'Зайсан - Восточно-казахстанская область'), ('002877', 'Заозерное - Акмолинская область'), ('007309', 'Заозерный - Мангистауская область'), ('008220', 'Заозерское - Акмолинская область'), ('008014', 'Западный - Восточно-казахстанская область'), ('008577', 'Заповедник - Алматинская область'), ('006903', 'Заречное - Костанайская область'), ('006855', 'Заречное - Алматинская область'), ('003813', 'Заречный - Алматинская область'), ('002691', 'Заречный - Актюбинская область'), ('008288', 'Заречный - Акмолинская область'), ('002689', 'Заречный - Костанайская область'), ('003084', 'Затоболовка - Костанайская область'), ('008370', 'Затобольск - Карагандинская область'), ('003014', 'Затобольск - Костанайская область'), ('000351', 'Затобольский - Костанайская область'), ('002923', 'Зачаганск - Западно-казахстанская область'), ('008171', 'Защита - Восточно-казахстанская область'), ('008177', 'Заятское - Костанайская область'), ('008165', 'Зеленовский - Западно-казахстанская область'), ('007448', 'Зеленое - Западно-казахстанская область'), ('007033', 'Зеленый Бор - Акмолинская область'), ('002952', 'Зеренда - Акмолинская область'), ('007826', 'Зертас - Южно-казахстанская область'), ('003899', 'Знаменка - Восточно-казахстанская область'), ('008557', 'Знаменский - Восточно-казахстанская область'), ('002632', 'Зубовск - Восточно-казахстанская область'), ('000116', 'Зыряновск - Восточно-казахстанская область'), ('003485', 'Иатай - Алматинская область'), ('003783', 'Игилик - Алматинская область'), ('007785', 'Ижевское - Акмолинская область'), ('008403', 'Илийский - Алматинская область'), ('003767', 'Ильинка - Акмолинская область'), ('008105', 'Ильясов - Кызылординская область'), ('002570', 'Индер - Атырауская область'), ('003550', 'Индерборский - Атырауская область'), ('007218', 'Индустриальный - Акмолинская область'), ('003350', 'Интернациональное - Акмолинская область'), ('006754', 'Ионосорека - Алматинская область'), ('002439', 'Иргели - Алматинская область'), ('008209', 'Ирили - Алматинская область'), ('008117', 'Ирколь - Кызылординская область'), ('002905', 'Иртышск - Павлодарская область'), ('008137', 'Иртышское - Карагандинская область'), ('003165', 'Исаева - Алматинская область'), ('006970', 'Исатай - Атырауская область'), ('008168', 'Ишимское - Акмолинская область'), ('003261', 'Кабалтау - Восточно-казахстанская область'), ('003557', 'Кабанбай - Акмолинская область'), ('008573', 'Кабанбай - Алматинская область'), ('007849', 'Кабанбай - Восточно-казахстанская область'), ('008346', 'Кабанбай Батыра - Акмолинская область'), ('002900', 'Кадыгурт - Южно-казахстанская область'), ('003147', 'Казалинск - Кызылординская область'), ('003681', 'Казалински - Кызылординская область'), ('008454', 'Казахстан - Алматинская область'), ('006999', 'Казталовка - Западно-казахстанская область'), ('002739', 'Казталовка - Восточно-казахстанская область'), ('007447', 'Казцик - Алматинская область'), ('007818', 'Казыбек Би - Карагандинская область'), ('007570', 'Казыбек Би - Алматинская область'), ('000335', 'Казыгурт - Южно-казахстанская область'), ('007691', 'Каипова - Алматинская область'), ('008566', 'Каиршахтинский - Атырауская область'), ('007578', 'Кайназар - Алматинская область'), ('003463', 'Кайнар - Южно-казахстанская область'), ('008484', 'Кайнар - Алматинская область'), ('003358', 'Кайнарбулак - Южно-казахстанская область'), ('007185', 'Кайрак - Костанайская область'), ('002885', 'Кайрат - Алматинская область'), ('003126', 'Кайсенова - Восточно-казахстанская область'), ('007270', 'Кайтпас - Южно-казахстанская область'), ('003208', 'Каламкас - Мангистауская область'), ('002621', 'Калбатау - Восточно-казахстанская область'), ('006888', 'Калининское - Западно-казахстанская область'), ('002750', 'Калкаман 2 - Алматинская область'), ('007224', 'Калпова - Алматинская область'), ('007020', 'Калуга - Жамбыльская область'), ('007048', 'Каменка - Алматинская область'), ('003020', 'Каменка - Акмолинская область'), ('008398', 'Камертоган - Алматинская область'), ('003601', 'Камысты - Костанайская область'), ('006825', 'Камыстыбас - Кызылординская область'), ('003544', 'Камышинка - Восточно-казахстанская область'), ('003807', 'Канабек - Алматинская область'), ('006882', 'Канай - Западно-казахстанская область'), ('002384', 'Кандыагаш - Актюбинская область'), ('007491', 'Капал - Алматинская область'), ('008445', 'Капитоновка - Акмолинская область'), ('000119', 'Капшагай - Алматинская область'), ('003600', 'Кара Адыр - Акмолинская область'), ('002755', 'Кара Ой - Алматинская область'), ('002924', 'Карабалык - Костанайская область'), ('002617', 'Карабас - Карагандинская область'), ('007392', 'Карабастау - Южно-казахстанская область'), ('003570', 'Карабатан - Атырауская область'), ('007324', 'Карабатыр - Костанайская область'), ('000273', 'Каработан - Атырауская область'), ('003675', 'Карабулак - Алматинская область'), ('007375', 'Карабулак - Восточно-казахстанская область'), ('000193', 'Карабулак - Акмолинская область'), ('002970', 'Карабулак - Южно-казахстанская область'), ('002769', 'Карагайлы - Алматинская область'), ('008415', 'Карагалинское - Актюбинская область'), ('000005', 'Караганда - Карагандинская область'), ('003670', 'Караганда- Сортировочная - Карагандинская область'), ('007227', 'Карагаш - Северо-казахстанская область'), ('002641', 'Каражал - Карагандинская область'), ('000149', 'Каражанбас - Мангистауская область'), ('007211', 'Карай - Алматинская область'), ('007317', 'Каракемир - Алматинская область'), ('008248', 'Каракеткен - Алматинская область'), ('003285', 'Каракога - Северо-казахстанская область'), ('003236', 'Каракудук - Мангистауская область'), ('003724', 'Каракур - Южно-казахстанская область'), ('003709', 'Караменды - Костанайская область'), ('008476', 'Карамурт - Восточно-казахстанская область'), ('008169', 'Караоткель - Акмолинская область'), ('003839', 'Карасаз - Жамбыльская область'), ('002758', 'Карасай - Алматинская область'), ('007506', 'Карасор - Павлодарская область'), ('007223', 'Карасу - Костанайская область'), ('002911', 'Карасу - Алматинская область'), ('006959', 'Карасу - Южно-казахстанская область'), ('002834', 'Каратау - Жамбыльская область'), ('002781', 'Каратобе - Западно-казахстанская область'), ('007960', 'Каратобе - Южно-казахстанская область'), ('008549', 'Каратова - Западно-казахстанская область'), ('003207', 'Каратомар - Павлодарская область'), ('000260', 'Каратон - Атырауская область'), ('006868', 'Каратурун - Акмолинская область'), ('006773', 'Каратусай - Актюбинская область'), ('003177', 'Караул - Восточно-казахстанская область'), ('007115', 'Караулкельды - Актюбинская область'), ('003640', 'Карачаганак - Западно-казахстанская область'), ('003453', 'Караш - Западно-казахстанская область'), ('007579', 'Карашокы - Алматинская область'), ('003091', 'Карашык - Южно-казахстанская область'), ('008591', 'Каргалинка - Алматинская область'), ('008131', 'Каргалинское - Актюбинская область'), ('003676', 'Каргалинское - Актюбинская область'), ('007768', 'Каргалы - Жамбыльская область'), ('002844', 'Каргалы - Алматинская область'), ('003306', 'Каркаралинск - Карагандинская область'), ('008362', 'Кармакчи - Кызылординская область'), ('000114', 'Каскелен - Алматинская область'), ('007574', 'Каспан - Алматинская область'), ('008144', 'Касталовка - Западно-казахстанская область'), ('007577', 'Касык - Жамбыльская область'), ('003191', 'Касыма Кайсенова - Восточно-казахстанская область'), ('008474', 'Касымбек - Алматинская область'), ('007424', 'Катарколь - Акмолинская область'), ('003847', 'Катон Карагай - Восточно-казахстанская область'), ('006935', 'Катпас - Южно-казахстанская область'), ('003657', 'Кахамкас - Мангистауская область'), ('002678', 'Качар - Костанайская область'), ('002718', 'Кеген - Алматинская область'), ('003569', 'Кейден - Кызылординская область'), ('007397', 'Келеса Носина - Актюбинская область'), ('002974', 'Келинтобе - Кызылординская область'), ('008090', 'Келлеровка - Северо-казахстанская область'), ('008589', 'Кемертоган - Алматинская область'), ('007499', 'Кенгирское - Карагандинская область'), ('006845', 'Кендала - Алматинская область'), ('007036', 'Кенес - Жамбыльская область'), ('008430', 'Кенес - Акмолинская область'), ('007766', 'Кенесары - Акмолинская область'), ('003602', 'Кенжеколь - Павлодарская область'), ('006908', 'Кенкияк - Актюбинская область'), ('006838', 'Кенская - Акмолинская область'), ('002944', 'Кенский - Акмолинская область'), ('003029', 'Кент - Кызылординская область'), ('000179', 'Кентау - Южно-казахстанская область'), ('008560', 'Кзылжар - Костанайская область'), ('007053', 'Кигач - Атырауская область'), ('000215', 'Киевка - Карагандинская область'), ('006858', 'Киземшек - Алматинская область'), ('002890', 'Киллы - Северо-казахстанская область'), ('002891', 'Кирова - Алматинская область'), ('003654', 'Кирпичный - Актюбинская область'), ('006768', 'Кис - Алматинская область'), ('003324', 'Кишкенеколь - Северо-казахстанская область'), ('008365', 'Кияхты - Жамбыльская область'), ('007267', 'Клочково - Костанайская область'), ('006696', 'Кобда - Актюбинская область'), ('007009', 'Ковыльная - Акмолинская область'), ('008053', 'Когалы - Алматинская область'), ('002896', 'Когершин - Жамбыльская область'), ('008405', 'Койшыбек - Алматинская область'), ('003840', 'Кокарна - Атырауская область'), ('003482', 'Кокежек - Акмолинская область'), ('008085', 'Кокжазык - Алматинская область'), ('003443', 'Коккайнар - Алматинская область'), ('008123', 'Кокозек - Алматинская область'), ('000347', 'Кокпенты - Восточно-казахстанская область'), ('002791', 'Коксаек - Южно-казахстанская область'), ('002766', 'Коксай - Алматинская область'), ('007070', 'Коксайек - Павлодарская область'), ('003841', 'Коксу - Карагандинская область'), ('008021', 'Коксун - Карагандинская область'), ('008077', 'Коктал - Акмолинская область'), ('007612', 'Коктал - Алматинская область'), ('008404', 'Коктал - Жамбыльская область'), ('006793', 'Коктал - Алматинская область'), ('007658', 'Коктау - Актюбинская область'), ('007187', 'Коктенколь - Карагандинская область'), ('003283', 'Коктерек - Южно-казахстанская область'), ('008466', 'Коктобе - Алматинская область'), ('000251', 'Коктобе - Павлодарская область'), ('003369', 'Кокшардан - Южно-казахстанская область'), ('000014', 'Кокшетау - Акмолинская область'), ('008571', 'Кок-Шокы - Кызылординская область'), ('003462', 'Кокшоу - Акмолинская область'), ('008061', 'Кокырат - Карагандинская область'), ('007141', 'Колашы - Алматинская область'), ('008008', 'Колбастау - Жамбыльская область'), ('002916', 'Колебатау - Восточно-казахстанская область'), ('003427', 'Колтоган - Жамбыльская область'), ('002954', 'Колхозши - Алматинская область'), ('007030', 'Кольжат - Алматинская область'), ('008590', 'Кольсай - Алматинская область'), ('006800', 'Кольшибек - Алматинская область'), ('002936', 'Комбатау - Восточно-казахстанская область'), ('007699', 'Комсомол - Алматинская область'), ('007291', 'Комсомол - Актюбинская область'), ('002645', 'Комсомольский - Акмолинская область'), ('007687', 'Комсомольское - Актюбинская область'), ('008396', 'Коныр - Южно-казахстанская область'), ('007914', 'Конырат - Южно-казахстанская область'), ('008081', 'Конырат - Карагандинская область'), ('002724', 'Конысбай - Акмолинская область'), ('003282', 'Коргалжин - Акмолинская область'), ('008383', 'Коргас - Алматинская область'), ('000068', 'Кордай - Актюбинская область'), ('008170', 'Кордай - '), ('003712', 'Кордай - Жамбыльская область'), ('008460', 'Косакжарский - Южно-казахстанская область'), ('008314', 'Косары - Атырауская область'), ('002757', 'Космос - Алматинская область'), ('003817', 'Косозен - Алматинская область'), ('000016', 'Костанай - Костанайская область'), ('008255', 'Косшагыл - Атырауская область'), ('003289', 'Косшы - Акмолинская область'), ('007684', 'Кошмамбет - Алматинская область'), ('002977', 'Кощи - Акмолинская область'), ('007126', 'Коянды - Акмолинская область'), ('003412', 'Коянкус - Алматинская область'), ('007052', 'Красина - Восточно-казахстанская область'), ('008537', 'Красная Звезда - Жамбыльская область'), ('007975', 'Красная Поляна - Акмолинская область'), ('007353', 'Красноармейка - Павлодарская область'), ('007175', 'Красноармейск - Западно-казахстанская область'), ('006844', 'Краснояр - Акмолинская область'), ('007215', 'Красный Восток - Алматинская область'), ('003898', 'Красный Кардон - Костанайская область'), ('008207', 'Красный Партизан - Костанайская область'), ('007349', 'Красный Тордон - Восточно-казахстанская область'), ('002692', 'Красный Яр - Акмолинская область'), ('002809', 'Крестовский - Карагандинская область'), ('007072', 'Круглоозерное - Западно-казахстанская область'), ('003583', 'Крымское - Костанайская область'), ('007613', 'Куат - Алматинская область'), ('000269', 'Кудайколь - Павлодарская область'), ('007871', 'Кудуки - Алматинская область'), ('000290', 'Кулан - Южно-казахстанская область'), ('006796', 'Кулан - Жамбыльская область'), ('003063', 'Кулгалы - Алматинская область'), ('007614', 'Куленовка - Восточно-казахстанская область'), ('008348', 'Култобе - Акмолинская область'), ('008551', 'Кулшогал - Жамбыльская область'), ('003088', 'Кульдала - Алматинская область'), ('000069', 'Кульсары - Атырауская область'), ('007035', 'Кулянск - Алматинская область'), ('003290', 'Кумарал - Алматинская область'), ('007037', 'Кумжота - Жамбыльская область'), ('007453', 'Кумтоган - Алматинская область'), ('006901', 'Кумшагал - Жамбыльская область'), ('003704', 'Кунчановка - Акмолинская область'), ('002727', 'Купчановка - Акмолинская область'), ('003719', 'Курайли - Актюбинская область'), ('008517', 'Курамыс - Алматинская область'), ('008116', 'Куратасай - Актюбинская область'), ('007142', 'Курилкино - Атырауская область'), ('002383', 'Куркелес - Южно-казахстанская область'), ('007026', 'Куропаткино - Акмолинская область'), ('003539', 'Курсай - Атырауская область'), ('003777', 'Курчатов - Восточно-казахстанская область'), ('000108', 'Курчатов (Каз) - Акмолинская область'), ('003174', 'Курчум - Восточно-казахстанская область'), ('002630', 'Курык - Мангистауская область'), ('007378', 'Курылыс - Атырауская область'), ('002860', 'Курылысшы - Алматинская область'), ('008475', 'Кутарыс - Восточно-казахстанская область'), ('002735', 'Кушмурун - Костанайская область'), ('007584', 'Кушокы - Карагандинская область'), ('008257', 'Кушум - Западно-казахстанская область'), ('002651', 'Кыземшек - Южно-казахстанская область'), ('000212', 'Кызыгурт - Южно-казахстанская область'), ('006824', 'Кызыжарма - Кызылординская область'), ('003042', 'Кызыл Жар - Южно-казахстанская область'), ('007568', 'Кызыл Жар - Алматинская область'), ('006751', 'Кызыл Жулдыз - Жамбыльская область'), ('007789', 'Кызыл Кайрат - Алматинская область'), ('008280', 'Кызылагаш - Алматинская область'), ('007101', 'Кызылжар - Северо-казахстанская область'), ('008293', 'Кызылжар - Алматинская область'), ('007132', 'Кызылжарма - Кызылординская область'), ('000010', 'Кызылорда - Кызылординская область'), ('002719', 'Кызылсай - Южно-казахстанская область'), ('003592', 'Кызылтал - Западно-казахстанская область'), ('003650', 'Кызыл-Тан - Жамбыльская область'), ('008387', 'Кызылтау - Карагандинская область'), ('003141', 'Кызылтобе - Мангистауская область'), ('003004', 'Кызылту - Алматинская область'), ('003720', 'Кызымшек - Южно-казахстанская область'), ('008036', 'Кыргаулды - Алматинская область'), ('008473', 'Кыргауылды - Алматинская область'), ('007189', 'Кырыккудык - Алматинская область'), ('007011', 'Кырымбет - Северо-казахстанская область'), ('002993', 'Кышашыган - Алматинская область'), ('008200', 'Лайбулак - Восточно-казахстанская область'), ('007606', 'Лбищенское - Западно-казахстанская область'), ('000286', 'Ленгер - Южно-казахстанская область'), ('002841', 'Ленинградское - Северо-казахстанская область'), ('006809', 'Ленинский - Павлодарская область'), ('007155', 'Ленинское - Северо-казахстанская область'), ('008406', 'Лепсы - Алматинская область'), ('003808', 'Лесновка - Алматинская область'), ('002647', 'Лесное - Костанайская область'), ('003032', 'Лесное - Акмолинская область'), ('003616', 'Лесозавод - Павлодарская область'), ('007171', 'Лесхоз - Атырауская область'), ('008034', 'Лиманное - Костанайская область'), ('000082', 'Лисаковск - Костанайская область'), ('008038', 'Ломоносовка - Северо-казахстанская область'), ('007820', 'Луговая - Жамбыльская область'), ('003510', 'Мааралды - Восточно-казахстанская область'), ('007607', 'Магистральный - Западно-казахстанская область'), ('003083', 'Маженск - Акмолинская область'), ('002707', 'Майкаин - Павлодарская область'), ('008096', 'Майкудук - Карагандинская область'), ('006756', 'Майский - Павлодарская область'), ('003044', 'Майское - Костанайская область'), ('003252', 'Майынкум - Жамбыльская область'), ('003218', 'Маканск - Акмолинская область'), ('002728', 'Маканчи - Восточно-казахстанская область'), ('003179', 'Макат - Атырауская область'), ('003303', 'Макинск - Акмолинская область'), ('006934', 'Максимовка - Акмолинская область'), ('003631', 'Макталы - Южно-казахстанская область'), ('003396', 'Малайсары - Актюбинская область'), ('008394', 'Малеевск - Восточно-казахстанская область'), ('002764', 'Маловодное - Алматинская область'), ('008250', 'Малое Белое - Северо-казахстанская область'), ('007710', 'Мамай - Акмолинская область'), ('008289', 'Мамай - Восточно-казахстанская область'), ('003722', 'Мамбет - Алматинская область'), ('003210', 'Мамлютка - Северо-казахстанская область'), ('007822', 'Мамыр - Алматинская область'), ('002872', 'Мамыш Улы - Жамбыльская область'), ('003748', 'Мангистау - Мангистауская область'), ('002356', 'Мангистау - Мангистауская область'), ('003594', 'Мангыстау - Мангистауская область'), ('002700', 'Мангышлак - Мангистауская область'), ('003238', 'Манинск - Акмолинская область'), ('003417', 'Манкент - Южно-казахстанская область'), ('003319', 'Мапагатова - Мангистауская область'), ('008196', 'Маралды - Восточно-казахстанская область'), ('007635', 'Мариновка - Акмолинская область'), ('003278', 'Мартобе - Южно-казахстанская область'), ('003069', 'Мартук - Актюбинская область'), ('008512', 'Масайтюбе - Западно-казахстанская область'), ('006842', 'Масак - Алматинская область'), ('003526', 'Матай - Алматинская область'), ('003156', 'Махамбет - Западно-казахстанская область'), ('003003', 'Махамбет - Атырауская область'), ('008277', 'Махамбетов - Кызылординская область'), ('008265', 'Махамбетова - Кызылординская область'), ('008048', 'Маяк - Костанайская область'), ('000345', 'Маяк - Алматинская область'), ('006791', 'Маякум - Южно-казахстанская область'), ('007572', 'Маятас - Южно-казахстанская область'), ('003157', 'Междуреченск - Алматинская область'), ('008380', 'Мелиоратор - Алматинская область'), ('007926', 'Меловая - Мангистауская область'), ('007127', 'Меловые Горки - Западно-казахстанская область'), ('003564', 'Меновное - Восточно-казахстанская область'), ('002661', 'Мерей - Алматинская область'), ('008562', 'Мерей - Западно-казахстанская область'), ('008120', 'Мереке - Западно-казахстанская область'), ('002793', 'Мерке - Жамбыльская область'), ('008044', 'Мертенсай - Кызылординская область'), ('008127', 'Металлург - Восточно-казахстанская область'), ('007123', 'Мечта - Алматинская область'), ('008483', 'Миновка - Акмолинская область'), ('003666', 'Минск - Акмолинская область'), ('002912', 'Мирный - Атырауская область'), ('007444', 'Мис - Кызылординская область'), ('007294', 'Михайловка - Восточно-казахстанская область'), ('007068', 'Мичурино - Акмолинская область'), ('002686', 'Мичурино - Западно-казахстанская область'), ('007661', 'Мичурино - Костанайская область'), ('007501', 'Мичуринское - Костанайская область'), ('003553', 'Миялы - Атырауская область'), ('007210', 'Мойнак - Алматинская область'), ('007513', 'Мойылды - Павлодарская область'), ('000079', 'Мойынкум - Актюбинская область'), ('003918', 'Мойынкум - Жамбыльская область'), ('002996', 'Молалы - Алматинская область'), ('008372', 'Молодежный - Карагандинская область'), ('008371', 'Молодежный - Акмолинская область'), ('002697', 'Молодежный - Восточно-казахстанская область'), ('002658', 'Молодежный - Карагандинская область'), ('003645', 'Момышулы - Жамбыльская область'), ('006719', 'Москалевка - Костанайская область'), ('003090', 'Москворецкое - Северо-казахстанская область'), ('007417', 'Мостовой - Атырауская область'), ('003810', 'Мугалжарское - Актюбинская область'), ('006831', 'Мукры - Алматинская область'), ('006823', 'Мунайлы - Мангистауская область'), ('003248', 'Мунайши - Мангистауская область'), ('000213', 'Мустафина - Карагандинская область'), ('003844', 'Мухаметжан Туймебаева - Алматинская область'), ('000262', 'Муялды - Павлодарская область'), ('002794', 'Мынарал - Жамбыльская область'), ('007526', 'Мынбаев - Алматинская область'), ('002835', 'Мырзакент - Южно-казахстанская область'), ('007149', 'Набережное - Павлодарская область'), ('007328', 'Набережное - Западно-казахстанская область'), ('007573', 'Надекс - Алматинская область'), ('006839', 'Нарынкол - Алматинская область'), ('003762', 'Наумовка - Акмолинская область'), ('002773', 'Наурыз 18/1 - Алматинская область'), ('003082', 'Научный - Акмолинская область'), ('007838', 'Нахаловка - Восточно-казахстанская область'), ('003363', 'Николаевка - Северо-казахстанская область'), ('007318', 'Николаевка - Карагандинская область'), ('003752', 'Никольское - Акмолинская область'), ('007146', 'Новая - Карагандинская область'), ('002830', 'Новая - Бухтарма - Восточно-казахстанская область'), ('007999', 'Новая Жизнь - Западно-казахстанская область'), ('006815', 'Новая Согра - Восточно-казахстанская область'), ('003833', 'Новая Тавань - Восточно-казахстанская область'), ('007014', 'Новая Шульба - Восточно-казахстанская область'), ('008060', 'Новенький - Западно-казахстанская область'), ('007504', 'Ново-Ахмирово - Восточно-казахстанская область'), ('007564', 'Новодолинский - Карагандинская область'), ('002782', 'Новоишимское - Северо-казахстанская область'), ('008505', 'Новоишимское - Северо-казахстанская область'), ('007277', 'Новокиенка - Акмолинская область'), ('008189', 'Новокирпичное - Атырауская область'), ('006723', 'Новокирпичный - Атырауская область'), ('003361', 'Новоникольское - Северо-казахстанская область'), ('008565', 'Новопокровка - Восточно-казахстанская область'), ('003707', 'Новорыбинка - Северо-казахстанская область'), ('003883', 'Новорыбинка - Акмолинская область'), ('003742', 'Новостепеновка - Актюбинская область'), ('006758', 'Новочерноярка - Павлодарская область'), ('008412', 'Новоявленка - Восточно-казахстанская область'), ('006726', 'Новый - Актюбинская область'), ('006714', 'Ногайбай - Южно-казахстанская область'), ('007640', 'Нокина - Актюбинская область'), ('007637', 'Нуржау - Атырауская область'), ('007610', 'Нуркент - Алматинская область'), ('007905', 'Нурлы - Алматинская область'), ('007775', 'Нурлыжол - Южно-казахстанская область'), ('003287', 'Нурлыкент - Джамбульская обл.'), ('002795', 'Нурлытау - Алматинская область'), ('008477', 'Нур-Шанкорген - Восточно-казахстанская область'), ('007883', 'Облекетка - Павлодарская область'), ('006832', 'Ожет - Алматинская область'), ('002840', 'Озень - Мангистауская область'), ('003701', 'Озерное - Костанайская область'), ('008465', 'Ой-Каратай - Алматинская область'), ('008054', 'Оймауыт - Алматинская область'), ('007284', 'Ойтал - Жамбыльская область'), ('007688', 'Ойыл - Актюбинская область'), ('003027', 'Ок Жетпес - Акмолинская область'), ('003055', 'Окраина - Актюбинская область'), ('008201', 'Октябрьская - Карагандинская область'), ('002420', 'Октябрьский - Костанайская область'), ('002886', 'Октябрьский - Восточно-казахстанская область'), ('002637', 'Октябрьское - Костанайская область'), ('003279', 'Октябрьское - Акмолинская область'), ('007535', 'Октябрьское - Восточно-казахстанская область'), ('006725', 'Ольшанка - Северо-казахстанская область'), ('006811', 'Онгар - Актюбинская область'), ('003885', 'Ондирис - Зерендинский район'), ('007738', 'Онды - Мангистауская область'), ('008597', 'Онтустик - Южно-казахстанская область'), ('006744', 'Опорная - Мангистауская область'), ('003152', 'Опытное Поле - Восточно-казахстанская область'), ('007043', 'Орал - Западно-казахстанская область'), ('008063', 'Ордабасы - Южно-казахстанская область'), ('006918', 'Оремен - Алматинская область'), ('006743', 'Оренбургский - Костанайская область'), ('003932', 'Оркен - Атырауская область'), ('008341', 'Орлик - Атырауская область'), ('008229', 'Ортакшыл - Атырауская область'), ('000342', 'Осакаровка - Карагандинская область'), ('003038', 'Остемир - Алматинская область'), ('007541', 'Отар - Жамбыльская область'), ('006964', 'Ответное Поле - Глубоковский'), ('000337', 'Отеген Батыр - Алматинская область'), ('007898', 'Отемис - Южно-казахстанская область'), ('007425', 'Отенай - Алматинская область'), ('008429', 'Отпан - Мангистауская область'), ('006833', 'Отрадное - Акмолинская область'), ('008218', 'Отрарский - Южно-казахстанская область'), ('000017', 'Павлодар - Павлодарская область'), ('003732', 'Павлодарское - Павлодарская область'), ('006718', 'Панфилов - Алматинская область'), ('002675', 'Панфиловский - Талгарский'), ('006721', 'Парасат - Алматинская область'), ('007615', 'Пахтакор - Южно-казахстанская область'), ('007700', 'Пенжим - Алматинская область'), ('002745', 'Первомайский - Восточно-казахстанская область'), ('002482', 'Первомайский - Алматинская область'), ('003390', 'Первомайское - Костанайская область'), ('003582', 'Перелески - Костанайская область'), ('008195', 'Переменное - Западно-казахстанская область'), ('002738', 'Переметное - Восточно-казахстанская область'), ('002668', 'Переметное - Западно-казахстанская область'), ('008100', 'Песчаное - Павлодарская область'), ('003501', 'Петерфельд - Кызылординская область'), ('007866', 'Петерфельд - Северо-казахстанская область'), ('003048', 'Петровка - Карагандинская область'), ('000018', 'Петропавловск - Северо-казахстанская область'), ('003870', 'Пешковка - Костанайская область'), ('008349', 'Пиджим - Алматинская область'), ('007559', 'Пионерский - Мангистауская область'), ('007816', 'Писаревка - Северо-казахстанская область'), ('008051', 'Плодоовощной - Западно-казахстанская область'), ('007636', 'Повозочное - Северо-казахстанская область'), ('002710', 'Подстепное - Западно-казахстанская область'), ('003789', 'Пойма - Западно-казахстанская область'), ('002850', 'Покровка - Алматинская область'), ('007912', 'Покровка - Актюбинская область'), ('006936', 'Покровка - Северо-казахстанская область'), ('007930', 'Половинка - Восточно-казахстанская область'), ('008113', 'Прапорщиково - Восточно-казахстанская область'), ('008068', 'Предгорное - Восточно-казахстанская область'), ('002652', 'Предгорье - Восточно-казахстанская область'), ('003853', 'Преображенка - Восточно-казахстанская область'), ('002713', 'Пресновка - Южно-казахстанская область'), ('006966', 'Пресновка - Северо-казахстанская область'), ('008269', 'Пригородное - Костанайская область'), ('007644', 'Пригородный - Жамбыльская область'), ('003158', 'Пригородный - Костанайская область'), ('003692', 'Пригородный - Акмолинская область'), ('008198', 'Пригородный - Акмолинская область'), ('008145', 'Придгорное - Восточно-казахстанская область'), ('002654', 'Прииртышский - Восточно-казахстанская область'), ('003010', 'Приморский - Мангистауская область'), ('002642', 'Приозерный - Мангистауская область'), ('002811', 'Приозерск - Карагандинская область'), ('007992', 'Приозерский - Мангистауская область'), ('007527', 'Приуральное - Западно-казахстанская область'), ('008453', 'Приуральский - Костанайская область'), ('006881', 'Пришимка - Акмолинская область'), ('006984', 'Прогресс - Костанайская область'), ('008361', 'Прогресс - Актюбинская область'), ('003787', 'Промышленный - Акмолинская область'), ('003568', 'Прудхоз - Западно-казахстанская область'), ('007150', 'Пугачево - Западно-казахстанская область'), ('003368', 'Пустынное - Карагандинская область'), ('008263', 'Путинцево - Восточно-казахстанская область'), ('006944', 'Радужный - Восточно-казахстанская область'), ('007008', 'Разгульное - Северо-казахстанская область'), ('007184', 'Раисовка - Северо-казахстанская область'), ('002980', 'Райгородок - Акмолинская область'), ('007021', 'Райсовское - Северо-казахстанская область'), ('002842', 'Райымбек - Алматинская область'), ('003836', 'Ракуша - Атырауская область'), ('002819', 'Рахат - Алматинская область'), ('003002', 'Ремизовка - Алматинская область'), ('000263', 'Риддер - Восточно-казахстанская область'), ('003256', 'Родина - Костанайская область'), ('007935', 'Родина - Акмолинская область'), ('007936', 'Ростовка - Карагандинская область'), ('007757', 'Рубежинское - Западно-казахстанская область'), ('007828', 'Рубежка - Западно-казахстанская область'), ('003937', 'Рудник - Карагандинская область'), ('007041', 'Рудник - Костанайская область'), ('000077', 'Рудный - Костанайская область'), ('007304', 'Рузаевка - Северо-казахстанская область'), ('002967', 'Рыскулова - Южно-казахстанская область'), ('008558', 'Рыскулова - Алматинская область'), ('007061', 'Сагиз - Атырауская область'), ('007105', 'Сагыз - Атырауская область'), ('003669', 'Садовое - Акмолинская область'), ('007015', 'Садовое - Костанайская область'), ('006713', 'Садырбай - Акмолинская область'), ('008059', 'Саздинский - Актюбинская область'), ('002650', 'Саина Шапагатова - Мангистауская область'), ('003142', 'Сай Утес - Мангистауская область'), ('002770', 'Саймасай - Алматинская область'), ('002481', 'Сайрам - Южно-казахстанская область'), ('003521', 'Сайхин - Западно-казахстанская область'), ('006734', 'Сайын - Мангистауская область'), ('003874', 'Саксаульск - Кызылординская область'), ('002917', 'Саксаульская - Кызылординская область'), ('007776', 'Самал - Южно-казахстанская область'), ('003606', 'Самарское - Восточно-казахстанская область'), ('003420', 'Сангородок - Карагандинская область'), ('003743', 'Сандыктау - Акмолинская область'), ('002616', 'Сапгородок - Карагандинская область'), ('003749', 'Сарайчик - Атырауская область'), ('008379', 'Саралжын - Западно-казахстанская область'), ('000092', 'Сарань - Карагандинская область'), ('007792', 'Саратовка - Восточно-казахстанская область'), ('003379', 'Саркан - Алматинская область'), ('002747', 'Сарканд - Алматинская область'), ('002771', 'Сармолдаева - Жамбыльская область'), ('003047', 'Сарнкемер - Жамбыльская область'), ('000219', 'Сарыагаш - Южно-казахстанская область'), ('007934', 'Сарыбел - Восточно-казахстанская область'), ('003626', 'Сарыжас - Алматинская область'), ('007906', 'Сарыказ - Алматинская область'), ('006735', 'Сарыкемер - Жамбыльская область'), ('006703', 'Сарыколь - Костанайская область'), ('007563', 'Сарымолдаева - Южно-казахстанская область'), ('002736', 'Сарымолдаево - Жамбыльская область'), ('002780', 'Сарыозек - Алматинская область'), ('007825', 'Сарыомир - Западно-казахстанская область'), ('003738', 'Сарысай - Актюбинская область'), ('000095', 'Сарышаган - Восточно-казахстанская область'), ('008011', 'Сары-Шаган - Карагандинская область'), ('003477', 'Састобе - Южно-казахстанская область'), ('000070', 'Сатпаев - Карагандинская область'), ('002823', 'Саты - Алматинская область'), ('003848', 'Саудакент - Жамбыльская область'), ('006980', 'Сауле - Южно-казахстанская область'), ('003629', 'Саумалколь - Северо-казахстанская область'), ('008174', 'Сауманколь - Северо-казахстанская область'), ('007266', 'Свободное - Костанайская область'), ('006720', 'Связист - Алматинская область'), ('003429', 'Северное - Карагандинская область'), ('003578', 'Северное Бузачи - Мангистауская область'), ('008241', 'Северный - Карагандинская область'), ('008235', 'Сейфуллин - Кызылординская область'), ('003516', 'Сейфуллина - Карагандинская область'), ('002999', 'Секировка - Восточно-казахстанская область'), ('000318', 'Секисовка - Восточно-казахстанская область'), ('000020', 'Семей - Восточно-казахстанская область'), ('007667', 'Сене - Алматинская область'), ('003638', 'Сенишак - Актюбинская область'), ('007917', 'Сепе - Акмолинская область'), ('003114', 'Сергеевка - Северо-казахстанская область'), ('007087', 'Серебряково - Западно-казахстанская область'), ('002802', 'Серебрянск - Восточно-казахстанская область'), ('003696', 'Силантьевка - Костанайская область'), ('003633', 'Силикатный - Акмолинская область'), ('007233', 'Скорая Помощ - Алматинская область'), ('007019', 'Славное - Жамбыльская область'), ('003043', 'Смирново - Северо-казахстанская область'), ('006818', 'Совет - Алматинская область'), ('007655', 'Согра - Восточно-казахстанская область'), ('008508', 'Созак - Южно-казахстанская область'), ('003381', 'Сойкын - Западно-казахстанская область'), ('003419', 'Соколовка - Северо-казахстанская область'), ('003620', 'Соколок - Атырауская область'), ('007505', 'Солнечный - Восточно-казахстанская область'), ('003246', 'Солнечный - Павлодарская область'), ('003352', 'Соловьево - Восточно-казахстанская область'), ('003795', 'Солончики - Карагандинская область'), ('008164', 'Сороковая - Акмолинская область'), ('003886', 'Сортобе - Жамбыльская область'), ('006898', 'Спасовка - Северо-казахстанская область'), ('007931', 'Спиридоновка - Акмолинская область'), ('002797', 'Станционное - Костанайская область'), ('000036', 'Степногорск - Акмолинская область'), ('008007', 'Степное - Костанайская область'), ('003759', 'Степное - Восточно-казахстанская область'), ('008203', 'Степное - Актюбинская область'), ('002879', 'Степняк - Акмолинская область'), ('007262', 'Сугатовка - Восточно-казахстанская область'), ('003925', 'Сузак - Южно-казахстанская область'), ('006731', 'Суйиндик - Мангистауская область'), ('003702', 'Султанрабат - Южно-казахстанская область'), ('008249', 'Сулутобе - Кызылординская область'), ('007621', 'Сулутор - Жамбыльская область'), ('002756', 'Сумбе - Алматинская область'), ('006874', 'Сунбе - Алматинская область'), ('003803', 'Сураншы Батыр - Алматинская область'), ('007121', 'Сушбе - Алматинская область'), ('000196', 'Сырань - '), ('008576', 'Сырдария - Кызылординская область'), ('002762', 'Сырымбет - Алматинская область'), ('002787', 'Т. Рыскулова - Южно-казахстанская область'), ('003664', 'Таврическое - Восточно-казахстанская область'), ('002843', 'Тагистик - Алматинская область'), ('008322', 'Тайкунур - Южно-казахстанская область'), ('007991', 'Тайпак - Западно-казахстанская область'), ('002898', 'Тайынша - Северо-казахстанская область'), ('007498', 'Талап - Карагандинская область'), ('007848', 'Талас - Жамбыльская область'), ('000157', 'Талгар - Алматинская область'), ('003519', 'Талдыбулак - Алматинская область'), ('007259', 'Талдыколь - Костанайская область'), ('000055', 'Талдыкорган - Алматинская область'), ('003460', 'Талдысай - Актюбинская область'), ('008520', 'Талсуат - Кызылординская область'), ('006948', 'Талшык - Северо-казахстанская область'), ('003135', 'Талынша - Северо-казахстанская область'), ('006968', 'Тамерлан - Южно-казахстанская область'), ('007421', 'Тамшик - Северо-казахстанская область'), ('007749', 'Танбалытас - Алматинская область'), ('000015', 'Тараз - Жамбыльская область'), ('007961', 'Тарановка - Костанайская область'), ('008409', 'Тарановскаое - Костанайская область'), ('002775', 'Тарановское - Костанайская область'), ('003804', 'Тарбагатай - Восточно-казахстанская область'), ('003195', 'Тарбогатай-Мунай - Восточно-казахстанская область'), ('006740', 'Тартогай - Кызылординская область'), ('007988', 'Тас Арык - Южно-казахстанская область'), ('000340', 'Тасай - Актюбинская область'), ('007374', 'Тасболат - Кызылординская область'), ('000109', 'Тасбугет - Кызылординская область'), ('002667', 'Таскала - Атырауская область'), ('007064', 'Таскала - Западно-казахстанская область'), ('007702', 'Таскелен - Южно-казахстанская область'), ('007231', 'Таскудук - Западно-казахстанская область'), ('002777', 'Тассай - Южно-казахстанская область'), ('002759', 'Тастыбулак - Алматинская область'), ('008462', 'Татьяновка - Костанайская область'), ('008592', 'Таужолы - Алматинская область'), ('002619', 'Таукент - Южно-казахстанская область'), ('006764', 'Таусамалы - Алматинская область'), ('003104', 'Таушык - Мангистауская область'), ('007575', 'Тегисшил - Восточно-казахстанская область'), ('007586', 'Тегисшил - Южно-казахстанская область'), ('000214', 'Текели - Алматинская область'), ('007959', 'Тельман - Южно-казахстанская область'), ('003914', 'Тельман - Мангистауская область'), ('003122', 'Темир - Актюбинская область'), ('007725', 'Темирлан - Южно-казахстанская область'), ('002792', 'Темирлан - Южно-казахстанская область'), ('003849', 'Темирлановка - Южно-казахстанская область'), ('003577', 'Темирлановка - Южно-казахстанская область'), ('000071', 'Темиртау - Карагандинская область'), ('007492', 'Тен6Либаев - Алматинская область'), ('002932', 'Тенге - Мангистауская область'), ('000076', 'Тенгиз - Атырауская область'), ('003146', 'Тендык - Атырауская область'), ('000167', 'Теректы - Алматинская область'), ('002943', 'Теренколь - Павлодарская область'), ('003678', 'Теренозек - Кызылординская область'), ('008458', 'Теренты - Карагандинская область'), ('008593', 'Терисбулак - Алматинская область'), ('007771', 'Тескенсу - Алматинская область'), ('006920', 'Тешстин - Южно-казахстанская область'), ('008600', 'Тимирязево - Северо-казахстанская область'), ('003658', 'Тимирязевск - Северо-казахстанская область'), ('008087', 'Тимофеевка - Костанайская область'), ('007173', 'Тимурский - Южно-казахстанская область'), ('007666', 'Тинжин - Алматинская область'), ('007337', 'Титова - Кызылординская область'), ('007631', 'Тлендиева - Алматинская область'), ('003134', 'Тобол - Костанайская область'), ('003128', 'Товричевского - Восточно-казахстанская область'), ('008395', 'Тогузак - Костанайская область'), ('007538', 'Тогус - Южно-казахстанская область'), ('002655', 'Тогыс - Южно-казахстанская область'), ('007827', 'Токжайлау - Алматинская область'), ('003039', 'Толе Би - Жамбыльская область'), ('006807', 'Толенина - Западно-казахстанская область'), ('008104', 'Толшик - Северо-казахстанская область'), ('003517', 'Томарик - Атырауская область'), ('003647', 'Томарлы - Атырауская область'), ('007131', 'Томенорык - Кызылординская область'), ('007695', 'Тонкерис - Южно-казахстанская область'), ('008451', 'Тонкерис - Западно-казахстанская область'), ('003431', 'Топар - Карагандинская область'), ('008302', 'Торангул - Северо-казахстанская область'), ('007497', 'Торангылык - Карагандинская область'), ('002982', 'Торгай - Костанайская область'), ('007016', 'Торетам - Кызылординская область'), ('003445', 'Торетам - Кызылординская область'), ('007028', 'Торетан - Кызылординская область'), ('003265', 'Торткудук - Южно-казахстанская область'), ('008516', 'Тортуй - Павлодарская область'), ('003264', 'Трекино - Западно-казахстанская область'), ('006854', 'Туганбай - Алматинская область'), ('003772', 'Тугыл - Восточно-казахстанская область'), ('003189', 'Тузбастау - Алматинская область'), ('008323', 'Туздыбастау - Алматинская область'), ('003086', 'Туйменбаево - Алматинская область'), ('007094', 'Тулпар - Южно-казахстанская область'), ('006698', 'Тунгуш - Западно-казахстанская область'), ('003143', 'Тупкара - Мангистауская область'), ('002768', 'Турар - Алматинская область'), ('007241', 'Турара Рыскулова - Жамбыльская область'), ('007748', 'Тураркент - Южно-казахстанская область'), ('003183', 'Турбат - Южно-казахстанская область'), ('003206', 'Турген - Акмолинская область'), ('003931', 'Турген - Алматинская область'), ('003628', 'Тургеневка - Акмолинская область'), ('000174', 'Туркестан - Южно-казахстанская область'), ('008256', 'Турлановский - Южно-казахстанская область'), ('007857', 'Турланская Экспидеция - Южно-казахстанская область'), ('003619', 'Турланский - Южно-казахстанская область'), ('007429', 'Тушыкудук - Атырауская область'), ('000322', 'Тшо - Атырауская область'), ('003266', 'Тюлькубас - Южно-казахстанская область'), ('008052', 'Тюльпан - Алматинская область'), ('006727', 'Тюмебаева - Алматинская область'), ('006871', 'Тюратам - Кызылординская область'), ('007157', 'Тюретам - Кызылординская область'), ('006873', 'Убаганское - Костанайская область'), ('008140', 'Узень - Мангистауская область'), ('007502', 'Узунколь - Костанайская область'), ('000330', 'Узынагаш - Алматинская область'), ('008084', 'Узынбулак - Алматинская область'), ('003580', 'Узынжар - Северо-казахстанская область'), ('008420', 'Уил - Актюбинская область'), ('008416', 'Улан - Алматинская область'), ('003005', 'Улкен - Алматинская область'), ('003009', 'Улкен Нарын - Восточно-казахстанская область'), ('003556', 'Улытау - Карагандинская область'), ('002665', 'Улькен - Алматинская область'), ('007090', 'Улькен Тас - Жамбыльская область'), ('007018', 'Улькен-Нарын - Восточно-казахстанская область'), ('007852', 'Ульяновское - Костанайская область'), ('008424', 'Умарал - Алматинская область'), ('007079', 'Умбетали - Алматинская область'), ('002615', 'Умирзак - Мангистауская область'), ('003351', 'Умкатты - Актюбинская область'), ('008511', 'Умырзак - Мангистауская область'), ('007103', 'Унгиртас - Жамбыльская область'), ('007770', 'Уражай - Акмолинская область'), ('000007', 'Уральск - Западно-казахстанская область'), ('002815', 'Урджар - Восточно-казахстанская область'), ('003391', 'Урдисар - Восточно-казахстанская область'), ('007258', 'Уркаш - Костанайская область'), ('007114', 'Урунхайка - Восточно-казахстанская область'), ('002942', 'Успенка - Павлодарская область'), ('000019', 'Усть-Каменогорск - Восточно-казахстанская область'), ('003552', 'Усть-Таловка - Восточно-казахстанская область'), ('007503', 'Учбулак - Жамбыльская область'), ('008578', 'Учхоз - Акмолинская область'), ('003802', 'Уш Жарма - Алматинская область'), ('003637', 'Ушановок - Восточно-казахстанская область'), ('000090', 'Ушарал - Алматинская область'), ('003188', 'Ушкатты - Актюбинская область'), ('002761', 'Ушконыр - Алматинская область'), ('003652', 'Уштобе - Карагандинская область'), ('000160', 'Уштобе - Алматинская область'), ('002743', 'Фабричный - Алматинская область'), ('003076', 'Федоровка - Костанайская область'), ('000257', 'Федоровка - Западно-казахстанская область'), ('008301', 'Федоровка - Костанайская область'), ('000255', 'Форт-Шевченко - Мангистауская область'), ('003404', 'Фрунзе - Костанайская область'), ('006896', 'Халай - Западно-казахстанская область'), ('007110', 'Хан Орда - Западно-казахстанская область'), ('008376', 'Харьковское - Костанайская область'), ('003745', 'Химпоселок - Атырауская область'), ('008444', 'Хлебодаровка - Актюбинская область'), ('006995', 'Холодный Ключ - Восточно-казахстанская область'), ('008304', 'Хоргос - Алматинская область'), ('000096', 'Хромтау - Актюбинская область'), ('003410', 'Целинное - Северо-казахстанская область'), ('006987', 'Целиноград - Акмолинская область'), ('007811', 'Центральное - Карагандинская область'), ('003221', 'Цик - Алматинская область'), ('003595', 'Цхан - Южно-казахстанская область'), ('008115', 'Чаглинка - Акмолинская область'), ('002933', 'Чагминка - Акмолинская область'), ('007163', 'Чайкино - Костанайская область'), ('007078', 'Чапаевка - Южно-казахстанская область'), ('002991', 'Чапаево - Алматинская область'), ('003036', 'Чапаево - Западно-казахстанская область'), ('002669', 'Чапаево - Атырауская область'), ('008546', 'Чапаевское - Акмолинская область'), ('007276', 'Чапай - Алматинская область'), ('002893', 'Чар - Восточно-казахстанская область'), ('003155', 'Чарык - Алматинская область'), ('003182', 'Чачнинка - Акмолинская область'), ('008515', 'Чаян - Южно-казахстанская область'), ('008503', 'Черемшанка - Восточно-казахстанская область'), ('003907', 'Чилик - Алматинская область'), ('006857', 'Чимарево - Западно-казахстанская область'), ('002623', 'Чинарева - Западно-казахстанская область'), ('007086', 'Чинаровское - Западно-казахстанская область'), ('003522', 'Чингирлау - Западно-казахстанская область'), ('007376', 'Числи - Южно-казахстанская область'), ('007130', 'Чкалово - Северо-казахстанская область'), ('007814', 'Чубары - Акмолинская область'), ('003536', 'Чувашинское - Западно-казахстанская область'), ('008373', 'Чулакай - Алматинская область'), ('003690', 'Чулак-Курган - Южно-казахстанская область'), ('002918', 'Чунджа - Алматинская область'), ('003395', 'Чупак-Курган - Южно-казахстанская область'), ('002928', 'Шабыт - Алматинская область'), ('003405', 'Шагалы - Северо-казахстанская область'), ('006958', 'Шаган - Алматинская область'), ('007099', 'Шаган - Кызылординская область'), ('006755', 'Шайнорыс - Жамбыльская область'), ('003854', 'Шакат - Павлодарская область'), ('007553', 'Шакпакбаба - Южно-казахстанская область'), ('006841', 'Шалабай - Восточно-казахстанская область'), ('003353', 'Шалдай - Павлодарская область'), ('002656', 'Шалкар - Актюбинская область'), ('007493', 'Шалкар - Мангистауская область'), ('003801', 'Шалкар - Алматинская область'), ('008262', 'Шалкия - Кызылординская область'), ('002754', 'Шамалган - Алматинская область'), ('007932', 'Шантобе - Акмолинская область'), ('006895', 'Шанырак - Атырауская область'), ('008294', 'Шапагат - Мангистауская область'), ('003310', 'Шапагатова - Мангистауская область'), ('003413', 'Шар - Восточно-казахстанская область'), ('008472', 'Шарапхана - Южно-казахстанская область'), ('002569', 'Шардара - Южно-казахстанская область'), ('002546', 'Шаульдер - Южно-казахстанская область'), ('002851', 'Шахан - Карагандинская область'), ('007219', 'Шахтерское - Карагандинская область'), ('000205', 'Шахтинск - Карагандинская область'), ('007292', 'Шашубай - Карагандинская область'), ('007576', 'Шаян - Восточно-казахстанская область'), ('002902', 'Шаян - Южно-казахстанская область'), ('002903', 'Шегек - Алматинская область'), ('000256', 'Шелек - Алматинская область'), ('006779', 'Шемонаиха - Восточно-казахстанская область'), ('000101', 'Шемонаиха - Восточно-казахстанская область'), ('002907', 'Шетекши - Павлодарская область'), ('002846', 'Шетпе - Мангистауская область'), ('008172', 'Шигерты - Павлодарская область'), ('003169', 'Шидерты - Павлодарская область'), ('002774', 'Шиели - Кызылординская область'), ('008111', 'Шилаево - Западно-казахстанская область'), ('006969', 'Шилибастау - Жамбыльская область'), ('008601', 'Шилибастау - Алматинская область'), ('008188', 'Шилик - Южно-казахстанская область'), ('002989', 'Шиндерты - Павлодарская область'), ('003518', 'Ширина - Атырауская область'), ('003277', 'Шокай - Павлодарская область'), ('003648', 'Шокпартогай - Атырауская область'), ('002790', 'Шолаккорган - Южно-казахстанская область'), ('008423', 'Шонжа - Алматинская область'), ('002963', 'Шопек Батыра - Алматинская область'), ('002919', 'Шоптыколь - Павлодарская область'), ('000184', 'Шортанды - Акмолинская область'), ('000189', 'Шу - Жамбыльская область'), ('003632', 'Шуак - Восточно-казахстанская область'), ('003068', 'Шубар Кудук - Актюбинская область'), ('006843', 'Шубаркудук - Актюбинская область'), ('003635', 'Шубарсу - Южно-казахстанская область'), ('003023', 'Шугыла - Алматинская область'), ('000104', 'Шульбинск - Акмолинская область'), ('003799', 'Шульбинск - Восточно-казахстанская область'), ('002763', 'Шыганак - Жамбыльская область'), ('008368', 'Шымалган - Алматинская область'), ('003342', 'Шымбулак - Алматинская область'), ('000012', 'Шымкент - Южно-казахстанская область'), ('000258', 'Щербаково - Костанайская область'), ('000253', 'Щербакты - Мангистауская область'), ('002962', 'Щербакты - Павлодарская область'), ('000183', 'Щучинск - Акмолинская область'), ('007140', 'Ынталы - Алматинская область'), ('003835', 'Ынтымак - Мангистауская область'), ('000324', 'Ынтымак - Алматинская область'), ('003816', 'Ынтымак - Южно-казахстанская область'), ('007835', 'Ынтымак - Атырауская область'), ('008422', 'Ыргыз - Актюбинская область'), ('000024', 'Экибастуз - Павлодарская область'), ('003024', 'Эмба - Актюбинская область'), ('007272', 'Энгельс - Карагандинская область'), ('003665', 'Энергетик - Алматинская область'), ('003567', 'Энергетиков - Акмолинская область'), ('007010', 'Юбилейное - Акмолинская область'), ('003869', 'Юбилейный - Костанайская область'), ('006739', 'Южный - Карагандинская область'), ('003286', 'Явленка - Северо-казахстанская область'), ('008427', 'Явленко - Северо-казахстанская область'), ('003916', 'Якорь - Северо-казахстанская область'), ('006736', 'Янайкино - Западно-казахстанская область'), ('003933', 'Январцево - Западно-казахстанская область'), ('007880', 'Ясная Поляна - Северо-казахстанская область'), ('003503', 'Ясное - Актюбинская область')], max_length=20, verbose_name='Город')),
+ ('address', models.CharField(max_length=100, verbose_name='Телефон')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='productvariation',
+ name='weight',
+ field=models.FloatField(verbose_name='Вес (кг)', default=0.1),
+ ),
+ ]
diff --git a/store/migrations/0014_auto_20150612_0050.py b/store/migrations/0014_auto_20150612_0050.py
new file mode 100644
index 0000000..6ab2601
--- /dev/null
+++ b/store/migrations/0014_auto_20150612_0050.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('store', '0013_auto_20150611_2306'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='orderdata',
+ name='deliv_type',
+ field=models.CharField(verbose_name='Способ доставки', choices=[('E', 'Экспресс-отправления по РК'), ('T', 'Не срочные отправления по РК'), ('A', 'Автоконсолидация по РК'), ('C', 'Доставка по городу')], max_length=2, default=''),
+ ),
+ migrations.AlterField(
+ model_name='orderdata',
+ name='address',
+ field=models.CharField(verbose_name='Адрес', max_length=100),
+ ),
+ ]
diff --git a/store/migrations/0015_orderdata_items.py b/store/migrations/0015_orderdata_items.py
new file mode 100644
index 0000000..80dbb95
--- /dev/null
+++ b/store/migrations/0015_orderdata_items.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('store', '0014_auto_20150612_0050'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='orderdata',
+ name='items',
+ field=models.CharField(default='', verbose_name='Товары', max_length=256),
+ ),
+ ]
diff --git a/store/models.py b/store/models.py
index 23d8c19..438ad56 100644
--- a/store/models.py
+++ b/store/models.py
@@ -2,6 +2,7 @@ from django.db import models
from django.contrib.postgres.fields import ArrayField
from decimal import *
from django.db.models import Count, Min
+from store.alemtat import alemtat_get_cities_tuple, alemtat_get_services_tuple
FIELD_TYPE_CHAR = 'char'
FIELD_TYPE_INT = 'int'
@@ -202,6 +203,8 @@ class ProductVariation(models.Model):
'В наличии (шт.)', default=1, null=False, blank=False)
article = models.CharField(
'Артикул', max_length=32, null=True, blank=True, default='')
+ weight = models.FloatField('Вес (кг)', default=0.1, null=False, blank=False)
+ #weight = models.FloatField('Вес (кг)', default=0.1, null=False, blank=False)
class Meta:
verbose_name = 'разновидность товара'
@@ -244,3 +247,22 @@ class ImageInProduct(models.Model):
class Meta:
verbose_name = 'фото товара'
verbose_name_plural = 'фото товаров'
+
+
+class OrderData(models.Model):
+ first_name = models.CharField(
+ 'Имя', max_length=64, blank=False, null=False)
+ last_name = models.CharField(
+ 'Фамилия', max_length=64, blank=False, null=False)
+ phone = models.CharField(
+ 'Телефон', max_length=15, blank=False, null=False)
+ email = models.EmailField(
+ 'Email', blank=False, null=False)
+ city = models.CharField(
+ 'Город', max_length=20, blank=False, null=False, choices=alemtat_get_cities_tuple())
+ address = models.CharField(
+ 'Адрес', max_length=100, blank=False, null=False)
+ deliv_type = models.CharField(
+ 'Способ доставки', max_length=2, blank=False, null=False, default='', choices=alemtat_get_services_tuple())
+ items = models.CharField(
+ 'Товары', max_length=256, blank=False, null=False, default='')
diff --git a/store/urls.py b/store/urls.py
index cf4abc0..032b8be 100644
--- a/store/urls.py
+++ b/store/urls.py
@@ -7,6 +7,7 @@ urlpatterns = patterns('',
url='/', permanent=True), name='store_index'),
url(r'^cart/$', CartDetailView.as_view(),
name='store_cart_detail'),
+
url(r'^cart/add/$', CartAddView.as_view(
permanent=False), name='store_cart_add'),
url(r'^cart/remove/$', CartRemoveView.as_view(
diff --git a/store/views.py b/store/views.py
index 1916506..5bd7bcb 100644
--- a/store/views.py
+++ b/store/views.py
@@ -1,11 +1,14 @@
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
-from django.shortcuts import get_object_or_404, redirect
+from django.shortcuts import get_object_or_404, redirect, render
from django.views.generic import *
from batiskaf.jinja2_ext.html_filters import escape
from .models import *
+from store.alemtat import AlemTat
from store.cart import Cart, CartItem
from django.contrib import messages
-
+from store.forms import OrderForm
+from django.http import JsonResponse
+from datetime import datetime
class CategoryBaseView(object):
category = None
@@ -165,9 +168,45 @@ class CartDetailView(TemplateView):
def get_context_data(self, **kwargs):
retval = super(CartDetailView, self).get_context_data()
retval['cart'] = Cart(self.request)
+ retval['form'] = OrderForm(self.request.POST or None)
+ #retval['form_delivs'] = DelivsForm()
return retval
def post(self, request, *args, **kwargs):
cart = Cart(self.request)
cart.update_items()
+
+ if 'order_next' in self.request.POST:
+ form = OrderForm(self.request.POST)
+ if form.is_valid():
+ order = form.save()
+ json_items = map(lambda items: {items.item.pk: items.count}, cart.items)
+ order.items = str(list(json_items))
+ order.save()
+ else:
+ return self.render_to_response(self.get_context_data())
+
return redirect(self.request.path)
+
+def get_order_amount(request):
+ retval = None
+ a = AlemTat()
+ cart = Cart(request)
+ retval = dict(a.get_amount(
+ request.GET['city'],
+ len(cart.items),
+ cart.weight,
+ request.GET['deliv'],
+ ))
+
+ return JsonResponse(retval)
+
+def order_view(request, order):
+ order = get_object_or_404(OrderData, pk=order)
+ c = dict(order=order)
+ return render(request, 'order_ok.jinja', c)
+
+def order_print(request, order):
+ order = get_object_or_404(OrderData, pk=order)
+ c = dict(order=order, date=datetime.now())
+ return render(request, 'order_print.jinja', c)
\ No newline at end of file