diff --git a/accounts/admin.py b/accounts/admin.py index 2b60e53..f8f6f69 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -59,11 +59,12 @@ class ProfileAdmin(UserAdmin): (None, { 'classes': ('wide',), 'fields': ('phone', 'email', 'first_name', 'last_name', 'password1', 'password2', 'temp_password')} - ), + ), ) search_fields = ('phone', 'email',) ordering = ('phone', 'email',) filter_horizontal = () + admin.site.register(Profile, ProfileAdmin) admin.site.unregister(Group) diff --git a/accounts/forms.py b/accounts/forms.py index 8708ff2..d4f59f9 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -19,7 +19,6 @@ class LoginForm(forms.Form): return data - class LoginSmsForm(forms.Form): sms = forms.IntegerField(label='Одноразовый пароль', required=True) @@ -29,10 +28,9 @@ class LoginSmsForm(forms.Form): try: profile = Profile.objects.get(phone=phone, temp_password=data) self.profile = profile - #profile.temp_password = randint(1000000, 9999999) - #self.temp_password = profile.temp_password - #profile.save() + # profile.temp_password = randint(1000000, 9999999) + # self.temp_password = profile.temp_password + # profile.save() except Profile.DoesNotExist: raise forms.ValidationError("Неверный одноразовый пароль") return data - diff --git a/accounts/models.py b/accounts/models.py index 535c431..36075fc 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -3,6 +3,7 @@ from django.core.mail import send_mail from django.db import models from datetime import datetime + class ProfileManager(BaseUserManager): def _create_user(self, phone, email, password, is_superuser, **extra_fields): @@ -37,7 +38,6 @@ class Profile(AbstractBaseUser): is_active = models.BooleanField('Активный', default=True, db_index=True) temp_password = models.IntegerField('Одноразовый пароль', default=None, blank=True, null=True) - USERNAME_FIELD = 'phone' REQUIRED_FIELDS = ['email'] @@ -67,4 +67,4 @@ class Profile(AbstractBaseUser): 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 + send_mail(subject, message, from_email, [self.email], **kwargs) diff --git a/accounts/urls.py b/accounts/urls.py index 0046f67..18fc6d6 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -12,4 +12,4 @@ urlpatterns = patterns('', url(r'^logout/$', account_logout, name='accounts_logout'), -) \ No newline at end of file + ) diff --git a/accounts/utils.py b/accounts/utils.py index b0ed3d8..6e3666b 100644 --- a/accounts/utils.py +++ b/accounts/utils.py @@ -7,15 +7,16 @@ from django.template.loader import render_to_string def normalize_phone(phone): retval = re.sub("\D", "", phone) if len(retval) > 10: - retval = retval[len(retval)-10:] + retval = retval[len(retval) - 10:] return retval + def send_email(profile, subject='Робот Batiskaf-kz.kz', template='mail/base.jinja', context={}): context['user'] = profile message = render_to_string(template, context) send_mail( - subject, - message, - recipient_list=[profile.email, ], - from_email=settings.DEFAULT_FROM_EMAIL - ) \ No newline at end of file + subject, + message, + recipient_list=[profile.email, ], + from_email=settings.DEFAULT_FROM_EMAIL + ) diff --git a/accounts/views.py b/accounts/views.py index 22807ef..473c679 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -9,25 +9,28 @@ from random import randint import requests from django.conf import settings + class LoginView(FormView): form_class = LoginForm template_name = 'accounts/login.jinja' + def login_view(request): form = LoginForm(request.POST or None) if form.is_valid(): phone = form.cleaned_data['phone'] params = dict( - login='Jango.kz', - psw='AcEMXtLGz042Fc1ZJUSl', - phones='7{}'.format(phone), - mes='Batiskaf.kz odnorazoviy parol: {}'.format(form.temp_password) + login='Jango.kz', + psw='AcEMXtLGz042Fc1ZJUSl', + phones='7{}'.format(phone), + mes='Batiskaf.kz odnorazoviy parol: {}'.format(form.temp_password) ) requests.get('http://smsc.ru/sys/send.php', params=params) - return redirect('/account/login/sms/?phone='+phone) + return redirect('/account/login/sms/?phone=' + phone) c = dict(form=form) return render(request, 'accounts/login.jinja', c) + def login_sms_view(request): form = LoginSmsForm(request.POST or None) phone = request.GET.get('phone', None) @@ -44,18 +47,20 @@ def login_sms_view(request): c = dict(form=form) return render(request, 'accounts/login_sms.jinja', c) + @login_required def account_index(request): return render(request, 'accounts/index.jinja') + @login_required def account_logout(request): logout(request) return redirect('/') + @login_required def order_detail(request, pk): order = get_object_or_404(OrderData, pk=pk, profile=request.user) c = dict(order=order) return render(request, 'accounts/order_detail.jinja', c) - diff --git a/api/views.py b/api/views.py index 5a95fd6..e20d0ee 100644 --- a/api/views.py +++ b/api/views.py @@ -15,14 +15,15 @@ def call_order(request): Телефон: {} Время: {} '''.format( - request.POST['name'], - request.POST['phone'], - request.POST['time'], - )) + request.POST['name'], + request.POST['phone'], + request.POST['time'], + )) except Exception as e: retval = dict(error=True) return JsonResponse(retval) + @csrf_exempt def order_order(request): retval = dict(error=False) @@ -36,14 +37,12 @@ def order_order(request): Email: {} Комментарий: {} '''.format( - item.title, - request.POST['name'], - request.POST['phone'], - request.POST['email'], - request.POST['comment'], - )) + item.title, + request.POST['name'], + request.POST['phone'], + request.POST['email'], + request.POST['comment'], + )) except Exception as e: retval = dict(error=True) return JsonResponse(retval) - - diff --git a/batiskaf/jinja2_ext/html_filters.py b/batiskaf/jinja2_ext/html_filters.py index 80e43f3..5ae5c51 100644 --- a/batiskaf/jinja2_ext/html_filters.py +++ b/batiskaf/jinja2_ext/html_filters.py @@ -15,9 +15,11 @@ def escape(text): use conditional_escape() instead. """ return mark_safe(force_text(text).replace( - '&', '&').replace('<', '<') + '&', '&').replace('<', '<') .replace('>', '>').replace( - '"', '"').replace("'", ''')) + '"', '"').replace("'", ''')) + + escape = allow_lazy(escape, six.text_type, SafeText) diff --git a/batiskaf/settings.py b/batiskaf/settings.py index 8d14c49..3cab1fc 100644 --- a/batiskaf/settings.py +++ b/batiskaf/settings.py @@ -88,7 +88,6 @@ ROOT_URLCONF = 'batiskaf.urls' WSGI_APPLICATION = 'batiskaf.wsgi.application' - # Database # https://docs.djangoproject.com/en/1.7/ref/settings/#databases if DEBUG: @@ -138,7 +137,6 @@ USE_L10N = False USE_TZ = False - # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.7/howto/static-files/ @@ -268,11 +266,11 @@ PROFILE_TEMP_PASSWORD = 'dE6Hyo9heWck5yiM2dIs' MERCHANT_CERTIFICATE_ID = "c183d5b8" # ; Серийный номер сертификата Cert Serial Number MERCHANT_NAME = "BATISKAF-KZ.KZ" # ; Название магазина (продавца) Shop/merchant Name -PRIVATE_KEY_FN = os.path.join(BASE_DIR, 'kkb_keys', 'cert.prv') # "../paysys/cert.prv" # ; Путь к закрытому ключу Private cert path +PRIVATE_KEY_FN = os.path.join(BASE_DIR, 'kkb_keys', + 'cert.prv') # "../paysys/cert.prv" # ; Путь к закрытому ключу Private cert path PRIVATE_KEY_PASS = "1q2w3e4r" # ; Пароль к закрытому ключу Private cert password # XML_TEMPLATE_FN = "../paysys/template.xml" # ; Путь к XML шаблону XML template path # XML_COMMAND_TEMPLATE_FN = "../paysys/command_template.xml" # ; Путь к XML шаблону для команд (возврат/подтверждение) PUBLIC_KEY_FN = os.path.join(BASE_DIR, 'kkb_keys', 'cert.pub') # "../paysys/kkbca.pem" # ; Путь к открытому ключу Public cert path MERCHANT_ID = "92210431" # ; Терминал ИД в банковской Системе - diff --git a/batiskaf/templates/jinja2/accounts/index.jinja b/batiskaf/templates/jinja2/accounts/index.jinja index aa5d3de..5cc10e1 100644 --- a/batiskaf/templates/jinja2/accounts/index.jinja +++ b/batiskaf/templates/jinja2/accounts/index.jinja @@ -2,18 +2,14 @@ {% block title %} Личный кабинет {% endblock %} - {% block content %}
Если вы уже совершали покупки в нашем интернет-магазине, на ваш номер телефона будет отправлено SMS-сообщение с одноразовым паролем для входа.
- - -Если вы уже совершали покупки в нашем интернет-магазине, на ваш номер телефона будет отправлено + SMS-сообщение с одноразовым паролем для входа.
+На Ваш номер было отправлено SMS-сообщение с одноразовым паролем для входа. Введите его в поле ниже.
- - -На Ваш номер было отправлено SMS-сообщение с одноразовым паролем для входа. Введите его в поле ниже.
+
+
+
+
- Добро пожаловать в интернет-магазин Батискаф!
- -Отзывы о магазине | Мой аккаунт | Моя - корзина {% if (request|cart).items|length > 0 %} - {{ (request|cart).items|length }}{% endif %} - - {% if request.user.is_authenticated() %} - - - | Выйти - {% else %} - | Войти - {% endif %} -
-Добро пожаловать в интернет-магазин Батискаф!
+Отзывы о магазине | Мой аккаунт | Моя + корзина {% if (request|cart).items|length > 0 %} + {{ (request|cart).items|length }}{% endif %} + {% if request.user.is_authenticated() %} + | Выйти + {% else %} + | Войти + {% endif %} +
+