54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.forms import PasswordChangeForm
|
|
from django import forms
|
|
|
|
from .models import BIO_MAX_LENGTH, UserProfile
|
|
|
|
|
|
class UsernameForm(forms.ModelForm):
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ['username']
|
|
|
|
def clean_username(self):
|
|
username = self.cleaned_data['username']
|
|
User = get_user_model()
|
|
if User.objects.exclude(pk=self.instance.pk).filter(username=username).exists():
|
|
raise forms.ValidationError('That username is already taken.')
|
|
return username
|
|
|
|
|
|
class EmailForm(forms.ModelForm):
|
|
email = forms.EmailField(required=False)
|
|
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ['email']
|
|
|
|
def clean_email(self):
|
|
return self.cleaned_data.get('email', '').strip()
|
|
|
|
|
|
class AvatarForm(forms.Form):
|
|
avatar = forms.ImageField(
|
|
label='Profile picture',
|
|
widget=forms.ClearableFileInput(attrs={'accept': 'image/*'}),
|
|
)
|
|
|
|
|
|
class BioForm(forms.ModelForm):
|
|
bio = forms.CharField(
|
|
label='Bio',
|
|
required=False,
|
|
max_length=BIO_MAX_LENGTH,
|
|
widget=forms.Textarea(attrs={
|
|
'rows': 4,
|
|
'placeholder': 'Tell people about yourself…',
|
|
'maxlength': BIO_MAX_LENGTH,
|
|
}),
|
|
)
|
|
|
|
class Meta:
|
|
model = UserProfile
|
|
fields = ['bio']
|