diff --git a/proj/settings.py b/proj/settings.py index 6b6b2371..d134b177 100644 --- a/proj/settings.py +++ b/proj/settings.py @@ -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', ) diff --git a/proj/urls.py b/proj/urls.py index 81a8b8f1..300c7391 100644 --- a/proj/urls.py +++ b/proj/urls.py @@ -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'), diff --git a/proj/views.py b/proj/views.py index 9585a206..9c1989ad 100644 --- a/proj/views.py +++ b/proj/views.py @@ -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') diff --git a/registration/backends/default/views.py b/registration/backends/default/views.py index 402e3463..746c89bc 100644 --- a/registration/backends/default/views.py +++ b/registration/backends/default/views.py @@ -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('/') diff --git a/registration/forms.py b/registration/forms.py index 30e240e4..564df0d6 100644 --- a/registration/forms.py +++ b/registration/forms.py @@ -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'] \ No newline at end of file + 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'Ваш Пароль')})) \ No newline at end of file diff --git a/registration/views.py b/registration/views.py index 07bc54dc..7bd3f15f 100644 --- a/registration/views.py +++ b/registration/views.py @@ -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 diff --git a/static/client/css/main.css b/static/client/css/main.css index 030ee961..fe422d6a 100644 --- a/static/client/css/main.css +++ b/static/client/css/main.css @@ -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: '—'; diff --git a/static/client/js/main.js b/static/client/js/main.js index 799409cb..2843b97c 100644 --- a/static/client/js/main.js +++ b/static/client/js/main.js @@ -18,7 +18,16 @@ function mapInit() { map: map }); } +/* */ +function addError(inputId, msg){ + var $input = $('#reg_form '+ inputId); + var $error = $("