38 lines
1016 B
Python
38 lines
1016 B
Python
from django import forms
|
|
from django.forms import ModelForm
|
|
from django.contrib.auth.models import User
|
|
|
|
class UserCreateForm(ModelForm):
|
|
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
|
|
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ['username', 'email']
|
|
|
|
|
|
def clean_password2(self):
|
|
password1 = self.cleaned_data.get("password1")
|
|
password2 = self.cleaned_data.get("password2")
|
|
|
|
if password1 and password2 and password1 != password2:
|
|
raise forms.ValidationError("Passwords don't match")
|
|
|
|
return password1
|
|
|
|
|
|
def clean_email(self):
|
|
email = self.cleaned_data.get("email")
|
|
if User.objects.filter(email = email):
|
|
raise forms.ValidationError("Email already in use.")
|
|
|
|
return email
|
|
|
|
|
|
def save(self, commit=True):
|
|
user = super(UserCreateForm, self).save(commit=False)
|
|
user.set_password(self.cleaned_data["password1"])
|
|
user.is_active = False
|
|
if commit:
|
|
user.save()
|
|
return user |