mirror of
https://github.com/AxioDL/axiodl-www.git
synced 2026-07-11 06:19:06 -07:00
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from django import forms
|
|
from django.contrib.auth.forms import UserCreationForm
|
|
from betterforms.multiform import MultiModelForm
|
|
from django.contrib.auth.models import User
|
|
from .models import Profile
|
|
|
|
|
|
class UserSignUpForm(UserCreationForm):
|
|
email = forms.CharField(max_length=254, label='Email Address', required=True, widget=forms.EmailInput())
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ('username', 'email', 'password1', 'password2')
|
|
|
|
|
|
class UserProfileForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Profile
|
|
fields = ['avatar', 'use_gravatar']
|
|
|
|
|
|
class UserCreationMultiForm(MultiModelForm):
|
|
form_classes = {
|
|
'user': UserSignUpForm,
|
|
'profile': UserProfileForm,
|
|
}
|
|
|
|
|
|
class ProfileForm(forms.ModelForm):
|
|
first_name = forms.CharField(max_length=256, required=False)
|
|
last_name = forms.CharField(max_length=256, required=False)
|
|
email = forms.EmailField(max_length=254, required=True, widget=forms.EmailInput())
|
|
use_gravatar = forms.BooleanField(label='Use avatars from Gravatar?', required=False)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(ProfileForm, self).__init__(*args, **kwargs)
|
|
|
|
try:
|
|
self.fields['use_gravatar'].initial = self.instance.profile.use_gravatar
|
|
self.fields['avatar'].initial = self.instance.profile.avatar
|
|
self.fields['first_name'].initial = self.instance.first_name
|
|
self.fields['last_name'].initial = self.instance.last_name
|
|
self.fields['email'].initial = self.instance.email
|
|
self.fields['location'].initial = self.instance.profile.location
|
|
except User.DoesNotExist:
|
|
pass
|
|
|
|
class Meta:
|
|
model = Profile
|
|
fields = ['avatar', 'first_name', 'last_name', 'email', 'use_gravatar', 'location', ]
|
|
exclude = ['user']
|
|
|
|
def save(self, commit=True):
|
|
super(ProfileForm, self).save(commit)
|
|
self.instance.profile.use_gravatar = self.cleaned_data['use_gravatar']
|
|
if self.cleaned_data['avatar'] is not False:
|
|
self.instance.profile.avatar = self.cleaned_data['avatar']
|
|
else:
|
|
self.instance.profile.avatar = None
|
|
self.instance.profile.location = self.cleaned_data['location']
|
|
self.instance.profile.save()
|
|
self.instance.save()
|
|
|
|
return self.instance
|