captcha to login and callback form

remotes/origin/yandex
Bachurin Sergey 12 years ago
parent c4b8dfc2e9
commit 1a9c219592
  1. 30
      project/callback/forms.py
  2. 7
      project/myauth/forms.py
  3. 15
      project/myauth/views.py
  4. 2
      project/settings.py
  5. BIN
      project/static/img/refresh.png
  6. 13
      project/static/js/commons.js
  7. 4
      project/static/js/dialogs.js
  8. 2
      project/templates/callback/callback_btn.html
  9. 2
      project/templates/callback/callback_form.html
  10. 6
      project/templates/docs/invoice/as_pdf.html
  11. 2
      project/templates/myauth/login_form.html
  12. 1
      project/urls.py

@ -1,11 +1,15 @@
# -*- coding: utf-8 -*-
from django import forms
from captcha.fields import CaptchaField
from . import models
class ReqAvailForm(forms.ModelForm):
"""Форма заказа товара."""
captcha = CaptchaField(label=u'Введите код с картинки')
class Meta:
model = models.ReqAvail
fields = ('name', 'phone', 'message')
@ -18,14 +22,22 @@ class ReqAvailForm(forms.ModelForm):
self.fields['name'].widget.attrs['width'] = u'Ваше имя, отчество'
def clean(self):
super(ReqAvailForm, self).clean()
name = self.cleaned_data.get('name', '').strip()
phone = self.cleaned_data.get('phone', '').strip()
if not name:
raise forms.ValidationError(u'Укажите Ваше имя.')
if not phone:
raise forms.ValidationError(u'Укажите Ваш телефон.')
cleaned_data = super(ReqAvailForm, self).clean()
if (cleaned_data.get('name') and cleaned_data.get('message') and cleaned_data.get('phone')) and not(cleaned_data.get('captcha')):
raise forms.ValidationError(u"Проверьте правильность кода проверки")
elif not (cleaned_data.get('name') and cleaned_data.get('message') and cleaned_data.get('phone') and cleaned_data.get('captcha')):
if self.errors.get('phone') and self.data.get('phone'):
raise forms.ValidationError(u"Проверьте правильность ввода контактов")
else:
raise forms.ValidationError(u"Заполните все поля")
return cleaned_data
#name = self.cleaned_data.get('name', '').strip()
#phone = self.cleaned_data.get('phone', '').strip()
#if not name:
# raise forms.ValidationError(u'Укажите Ваше имя.')
#if not phone:
# raise forms.ValidationError(u'Укажите Ваш телефон.')
return self.cleaned_data

@ -2,10 +2,12 @@
from django import forms
from django.conf import settings
from django.contrib.auth import authenticate
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from captcha.fields import CaptchaField
from project.commons.forms import set_field_error
from project.customer import consts as customer_consts
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from models import DokUser
@ -182,6 +184,9 @@ class LoginForm(forms.Form):
return self.user_cache
class CaptchedLoginForm(LoginForm):
captcha = CaptchaField(label=u'Введите код с картинки')
class CustomUserCreationForm(UserCreationForm):
"""

@ -209,11 +209,16 @@ def change_email(request):
@csrf_protect
def login(request):
"""Вход в систему."""
if request.session.get('login_count', None):
request.session['login_count'] += 1
else:
form_class = forms.LoginForm
request.session['login_count'] = 0
if request.session['login_count'] > 0:
form_class = forms.CaptchedLoginForm
form_prefix = 'login'
template_name = 'myauth/login.html'
success_url = 'customer_index'
if request.method == 'POST':
form = form_class(data=request.POST, prefix=form_prefix)
if form.is_valid():
@ -221,14 +226,12 @@ def login(request):
old_session_key = request.user.profile.user_session_key
request.user.profile.user_session_key = request.session.session_key
request.user.profile.save()
#try:
# session = session.objects.get(session_key=old_session_key)
# session.delete()
#except:
# pass
del request.session['login_count']
if request.user.profile.check_name_not_filled():
success_url = 'customer_profile_edit'
return redirect(success_url)
else:
request.session['login_count'] += 1
else:
form = form_class(prefix=form_prefix)

@ -272,6 +272,8 @@ CELERYBEAT_SCHEDULE = {
},
}
CAPTCHA_OUTPUT_FORMAT = u"%(hidden_field)s%(text_field)s<a href='#' class='captcha_refresh'><img src='" + STATIC_URL + "img/refresh.png' /></a> %(image)s"
try:
from project.local_settings import *
except ImportError:

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

@ -1,5 +1,18 @@
$(document).ready(function() {
$('.has-datepicker').datepicker({dateFormat: 'dd.mm.yy'});
$('.captcha_refresh').click(function(e) {
e.preventDefault();
var $form = $(this).parents('form');
var url = location.protocol + "//" + window.location.hostname + ":"
+ location.port + "/captcha/refresh/";
$.getJSON(url, {}, function(json) {
$form.find('input[name="captcha_1"]').val('');
$form.find('input[name="captcha_0"]').val(json.key);
$form.find('img.captcha').attr('src', json.image_url);
});
});
});
function fetch_data(url, async) {

@ -61,6 +61,10 @@ $(document).ready(function() {
else {
// process form errors
if (data.form_errors) {
var captcha = $(form).find('img.captcha');
if (captcha) {
$(form).find('a.captcha_refresh').click();
}
var errors = $('.errors-layout', form);
var html = '<ul>';
for (var err in data.form_errors) {

@ -1 +1 @@
<a href="#" onclick="return show_req_avail_form('{% url 'catalog-req-avail-no-id' %}');">Заказать обратный звонок</a>
<a href="#" onclick="return show_req_avail_form('{% url 'catalog-req-avail-no-id' %}');">Задать вопрос</a>

@ -1,4 +1,4 @@
<form id="req-avail-form" action="" method="post" title="Заказ обратного звонка">
<form id="req-avail-form" action="" method="post" title="Задать вопрос">
{% csrf_token %}
<div class='grey-box'>
<div style="margin: 0px 0px 20px 0px;">Оставьте свои контакты и мы перезвоним вам, ответим на все ваши вопросы</div>

@ -166,7 +166,7 @@
{{ profile.get_boss_title }}
</td>
<td class="bottom_border">
{% if obj.add_sign_and_stamp and profile.boss_sign %} {# TODO передавать флаг из вьюхи #}
{% if profile.boss_sign %} {# TODO передавать флаг из вьюхи #}
<img src="{{ profile.boss_sign.path }}" /> {# подпись руководителя #}
{% endif %}
</td>
@ -182,7 +182,7 @@
<tr>
<td colspan="2">Главный бухгалтер</td>
<td class="bottom_border">
{% if obj.add_sign_and_stamp and profile.glavbuh_sign %} {# TODO передавать флаг из вьюхи #}
{% if profile.glavbuh_sign %} {# TODO передавать флаг из вьюхи #}
<img src="{{ profile.glavbuh_sign.path }}" /> {# подпись главбуха #}
{% else %}
<br />&nbsp;
@ -197,7 +197,6 @@
<tr>
<td colspan="2">Главный бухгалтер</td>
<td class="bottom_border">
{% if obj.add_sign_and_stamp %} {# TODO передавать флаг из вьюхи #}
{% if profile.glavbuh_sign %}
<img src="{{ profile.glavbuh_sign.path }}" /> {# подпись главбуха #}
{% else %}
@ -207,7 +206,6 @@
<br />&nbsp;
{% endif %}
{% endif %}
{% endif %}
</td>
<td></td>
<td>

@ -10,7 +10,7 @@
{{ hidden }}
{% endfor %}
{% for field in form %}
{% for field in form.visible_fields %}
<div id="{{ field.name }}" class="field">
{% if field.label %}
{{ field.label_tag }}

@ -28,6 +28,7 @@ urlpatterns = patterns('',
url(r'^my/callback/', include('project.callback.urls')),
url(r'^user/', include('project.myauth.urls')),
url(r'^captcha/', include('captcha.urls')),
url(r'^', include('cms.urls')),
)

Loading…
Cancel
Save