Files
dss/spa/forms.py
2013-07-02 21:24:13 +01:00

71 lines
2.1 KiB
Python
Executable File

from django import forms
from django.contrib.auth.models import User
from django.forms.models import ModelForm
from spa.models.userprofile import UserProfile
class UserForm(ModelForm):
avatar_image_select = forms.ChoiceField(
choices=(
('gravatar', "Use gravatar image."),
('social', "Use Twitter/Facebook image."),
('custom', "Use custom image (upload below).")
),
label="Avatar Image",
widget=forms.RadioSelect,
initial='option_gravatar',
help_text="Select the source of your avatar image."
)
avatar_image = forms.ImageField(
label="",
required=False
)
class Meta:
model = User
fields = ('email', 'first_name', 'last_name')
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'User details',
'display_name',
'email',
'first_name',
'last_name',
'avatar_image_select',
'avatar_image'
),
FormActions(
Submit('save_changes', 'Save changes', css_class="btn-primary"),
Submit('cancel', 'Cancel'),
)
)
self.helper.form_class = 'form-horizontal'
self.helper.form_id = 'id-new-user-form'
self.helper.form_method = 'post'
self.helper.form_error_title = 'Ooopsies'
self.helper.formset_error_title = 'Ooopsies'
self.helper.form_show_errors = True
def save(self, *args, **kwargs):
user = super(UserForm, self).save(*args, **kwargs)
profile = UserProfile.objects.filter(user=user)[0]
if profile is None:
profile = UserProfile()
profile.user = user
profile.avatar_type = self.cleaned_data['avatar_image_select']
profile.avatar_image = self.cleaned_data['avatar_image']
# and so on with the remaining fields
profile.save()
return profile