You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.1 KiB
30 lines
1.1 KiB
# -*- coding: utf-8 -*-
|
|
from django import forms
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from accounts.models import User
|
|
|
|
|
|
class EmailForm(forms.Form):
|
|
email = forms.EmailField(label=_(u'Email address'))
|
|
|
|
|
|
class AssociateForm(EmailForm):
|
|
_errors = {
|
|
'required': _(u'Данный email уже зарегистрирован. Авторизируйтесь чтобы привязать аккаунт.'),
|
|
'invalid': _(u'Неправильный логин или пароль.')
|
|
}
|
|
password = forms.CharField(label=_(u'Пароль'), widget=forms.PasswordInput(), error_messages=_errors)
|
|
|
|
def clean_password(self):
|
|
self.user = None
|
|
pw = self.cleaned_data.get('password')
|
|
if pw:
|
|
try:
|
|
self.user = User.objects.get(email=self.cleaned_data.get('email'))
|
|
except:
|
|
self.user = None
|
|
if self.user and not self.user.check_password(pw):
|
|
self.user = None
|
|
raise forms.ValidationError(self.fields['password'].error_messages['invalid'])
|
|
return pw |