remotes/origin/1203
Nazar Kotyuk 12 years ago
parent b0673d92fe
commit 0a16f04b77
  1. 5
      proj/settings.py
  2. 12
      proj/urls.py
  3. 9
      proj/views.py
  4. 71
      registration/backends/default/views.py
  5. 9
      registration/forms.py
  6. 6
      registration/views.py
  7. 4
      static/client/css/main.css
  8. 69
      static/client/js/main.js
  9. 11
      templates/client/base_client.html

@ -185,8 +185,8 @@ AUTH_USER_MODEL = 'accounts.User'
#AUTH_PROFILE_MODULE = 'accounts.UserProfile'
#for admin. for project will be another
LOGIN_URL = '/admin/accounts/login_admin'
LOGIN_REDIRECT_URL = '/admin'
#LOGIN_URL = '/admin/accounts/login_admin'
#LOGIN_REDIRECT_URL = '/admin'
#registration info
ACCOUNT_ACTIVATION_DAYS=2
@ -249,6 +249,7 @@ INSTALLED_APPS = (
'hvad',
'ckeditor',
'bitfield',
'social_auth',
#'south',
#'debug_toolbar',
)

@ -5,13 +5,21 @@ from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
from django.contrib.auth.views import login, logout
urlpatterns = patterns('',
#uncomment to enable django admin
#url(r'^admin/', include(admin.site.urls)),
url(r'^$', 'proj.views.home', name='home'),
url(r'^login/', login),
url(r'^logout/', logout),
url(r'^/', 'proj.views.home', include('registration.backends.default.urls')),
url(r'^admin/', include('proj.admin_urls')),
url(r'^accounts/', include('registration.backends.default.urls')),
)
# ajax urls
urlpatterns += patterns('',
url(r'^register/', 'registration.backends.default.views.RegisterAjaxView'),
)
'''
urlpatterns = patterns('',
url(r'^$', 'proj.views.home', name='home'),

@ -6,6 +6,8 @@ from django.contrib.contenttypes.models import ContentType
#from forms import SettingsForm
#from models import Settings
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from file.models import TmpFile, FileModel
@ -14,15 +16,16 @@ from city.models import City
from theme.models import Tag
from django.db.models.loading import get_model
from registration.forms import RegistrationFormUniqueEmail
from registration.forms import RegistrationFormUniqueEmail, LoginForm
def home(request):
reg_form = RegistrationFormUniqueEmail()
args = {'reg_form': reg_form}
login_form = LoginForm()
args = {'reg_form': reg_form, 'login_form': login_form}
args.update(csrf(request))
return render_to_response('base_client.html', args)
return render_to_response('base_client.html', args, context_instance=RequestContext(request))
def test(request):
return render_to_response('test.html')

@ -8,6 +8,8 @@ from registration.views import ActivationView as BaseActivationView
from registration.views import RegistrationView as BaseRegistrationView
import json
class RegistrationView(BaseRegistrationView):
"""
A registration backend which follows a simple workflow:
@ -81,6 +83,7 @@ class RegistrationView(BaseRegistrationView):
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user
def registration_allowed(self, request):
@ -98,15 +101,18 @@ class RegistrationView(BaseRegistrationView):
"""
return getattr(settings, 'REGISTRATION_OPEN', True)
def get_success_url(self, request, user):
"""
Return the name of the URL to redirect to after successful
user registration.
"""
# return json.dumps({'bla': 'ok'})
return ('registration_complete', (), {})
class ActivationView(BaseActivationView):
def activate(self, request, activation_key):
"""
@ -128,3 +134,68 @@ class ActivationView(BaseActivationView):
def get_success_url(self, request, user):
return ('registration_activation_complete', (), {})
from django.http import HttpResponse, HttpResponseRedirect
from accounts.models import User
from registration.forms import RegistrationFormUniqueEmail, LoginForm
from django.contrib.auth import login, logout
from django.views.decorators.debug import sensitive_post_parameters
from django.views.decorators.cache import never_cache
@sensitive_post_parameters('password1', 'password2')
@never_cache
def RegisterAjaxView(request):
if request.is_ajax():
data = {'success': False}
if request.POST:
form = RegistrationFormUniqueEmail(request.POST)
if form.is_valid():
first_name, last_name, email, password = form.cleaned_data['first_name'],\
form.cleaned_data['last_name'], form.cleaned_data['email'],\
form.cleaned_data['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = RegistrationProfile.objects.create_inactive_user(first_name, last_name, email,
password, site)
signals.user_registered.send(sender=User,
user=new_user,
request=request)
data['success'] = True
else:
data.update(form.errors)
return HttpResponse(json.dumps(data), content_type='application/json')
else:
# 404
return HttpResponse('not post')
else:
# 404
return HttpResponse('not ajax')
from django.contrib.auth.forms import AuthenticationForm
@sensitive_post_parameters('password')
def LoginAjaxView(request):
if request.POST:
form = AuthenticationForm(request.POST)
if form.is_valid():
login(request, form.get_user())
return HttpResponseRedirect('/')
else:
return HttpResponse('bla')
else:
form = LoginForm()
return HttpResponseRedirect('/')

@ -8,6 +8,8 @@ needs of custom user models, you will need to write your own forms if
you're using a custom model.
"""
try:
from django.contrib.auth import get_user_model
User = get_user_model()
@ -17,6 +19,7 @@ except ImportError:
#from django.contrib.auth.models import User
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import ugettext_lazy as _
@ -131,4 +134,8 @@ class RegistrationFormNoFreeEmail(RegistrationForm):
email_domain = self.cleaned_data['email'].split('@')[1]
if email_domain in self.bad_domains:
raise forms.ValidationError(_("Registration using free email addresses is prohibited. Please supply a different email address."))
return self.cleaned_data['email']
return self.cleaned_data['email']
class LoginForm(AuthenticationForm):
username = forms.CharField(max_length=254, widget=forms.TextInput(attrs={'placeholder': _(u'Ваш адрес электронной почты')}))
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput(attrs={'placeholder': _(u'Ваш Пароль')}))

@ -11,6 +11,8 @@ from registration import signals
from registration.forms import RegistrationForm, RegistrationFormUniqueEmail
import json
class _RequestPassingFormView(FormView):
"""
A version of FormView which passes extra arguments to certain
@ -112,7 +114,7 @@ class RegistrationView(_RequestPassingFormView):
class ActivationView(TemplateView):
"""
Base class for user activation views.
"""
http_method_names = ['get']
template_name = 'registration/activate.html'
@ -134,7 +136,7 @@ class ActivationView(TemplateView):
def activate(self, request, *args, **kwargs):
"""
Implement account-activation logic here.
"""
raise NotImplementedError

@ -3444,6 +3444,10 @@ form.s-message {
padding-left: 20px;
display: none;
}
.pwf-msg .msg-error {
color: #fe0238;
padding-left: 20px;
}
.pwf-msg .msg-help:before {
content: '—';

@ -18,7 +18,16 @@ function mapInit() {
map: map
});
}
/* */
function addError(inputId, msg){
var $input = $('#reg_form '+ inputId);
var $error = $("<div>").attr("class", "pwf-msg").append(
$("<div>").attr("class", "msg-error").append(msg)
);
$input.parent().parent().append($error)
}
!function ($) {
@ -40,15 +49,61 @@ function mapInit() {
});
}
});
/* submiting registration form */
$(function () {
$('#reg_form').on('submit', function(){
$('#reg_form').on('submit', function(event){
event.preventDefault();
var formData = $(this).serialize();
$.post('register/', formData, function(data){
if(data.success){
//register success
// remove input values
$('#reg_form input').each(function(i){
$(this).val("");
});
// close popup
$.fancybox.close();
}
else{
//hide help messages
$("#reg_form .msg-help:visible").hide();
//delete previous errors
$("#reg_form .msg-error").parent().remove();
//generate new errors
var form_inputs = ['first_name', 'last_name', 'email', 'password1', 'password2']
for(var i= 0; i < form_inputs.length; i++){
if(form_inputs[i] in data){
var input_id = '#id_'+form_inputs[i];
addError(input_id, data[form_inputs[i]])
}
}
}
});
});
/* submiting login form
$('#log_form').on('submit', function(event){
event.preventDefault();
var formData = $(this).serialize();
$.post('accounts/register/', formData, function(){
alert('success');
var url = 'login/';
$.ajax({
url: url,
type: 'post',
data: formData,
success: function(data){
if(data.success){
console.log('success');
}
else{
console.log(data);
}
}
});
return false;
})
});
*/
/* Нестандартное оформление для поля select */
$.fn.customSelect = function () {
@ -578,8 +633,10 @@ function mapInit() {
var $input = $(this);
var $fLine = $input.closest(".pwf-line");
var $help = $fLine.find('div.msg-help');
var $error = $fLine.find('div.msg-error');
if ($help.is(':hidden')) {
$help.fadeIn(300);
$error.parent().remove();
}
});

@ -65,7 +65,7 @@
<li><a href="#"><img src="{% static 'client/img/soc-medias/sm-icon-vk.png" title="В контакте" alt="В контакте' %} " /></a></li>
<li><a href="#"><img src="{% static 'client/img/soc-medias/sm-icon-twit.png" title="Twitter" alt="Twitter' %} " /></a></li>
</ul>
{% if user %}
{% if user.is_authenticated %}
<div class="cabinet-links">
<div class="cl-body clearfix">
@ -82,7 +82,7 @@
</div>
<div class="logout"><a href="#">Выход</a></div>
<div class="logout"><a href="logout/">Выход</a></div>
</div>
{% else %}
@ -577,7 +577,6 @@
<div class="pwf-line">
<div class="pwf-field">
{{ reg_form.first_name }}
<!--<input type="text" name="uname" placeholder="{% trans 'Имя' %}" /> -->
</div>
<div class="pwf-msg">
<div class="msg-help">{% trans 'например, свое имя' %}</div>
@ -637,13 +636,13 @@
<div class="pw-title">{% trans 'Вход в личный кабинет' %}</div>
</header>
<div class="pw-body clearfix">
<form class="pw-form" action="#">
<form method="post" id="log_form" class="pw-form" action="login/">{% csrf_token %}
<div class="pwf-line">
<div class="pwf-field"><input type="text" name="umail" placeholder="{% trans 'Ваш адрес электронной почты' %}" /></div>
<div class="pwf-field">{{ login_form.username }}</div>
<div class="pwf-msg"></div>
</div>
<div class="pwf-line">
<div class="pwf-field"><input type="password" name="upwd" placeholder="{% trans 'Придумайте пароль' %}" /></div>
<div class="pwf-field">{{ login_form.password }}</div>
<div class="pwf-msg"><a class="forgot" href="#">{% trans 'Напомнить пароль' %}</a></div>
</div>
<div class="pwf-buttons-line">

Loading…
Cancel
Save