class ProfileForm(forms.ModelForm):
first_name = forms.CharField(required=False, max_length=30, label=u"Имя")
last_name = forms.CharField(required=False, max_length=30, label=u"Фамилия")
def __init__(self, *args, **kwargs):
super(ProfileForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = ('first_name', 'last_name', 'location', 'sex', 'avatar')
class Meta:
model = UserProfile
fields = ('first_name', 'last_name', 'location', 'sex', 'avatar')
def clean_avatar(self):
if self.cleaned_data.get('avatar'):
if self.cleaned_data['avatar'].size > settings.MAX_AVATAR_FILE_SIZE * 1024:
raise forms.ValidationError(u"Превышен максимальный размер аватары")
return self.cleaned_data['avatar']
def save(self, request):
usr = User.objects.get(pk=request.user.id)
# Modify user
usr.first_name = self.cleaned_data['first_name']
usr.last_name = self.cleaned_data['last_name']
usr.save()
#forms.save_instance(self, UserProfile(user=usr))
self.cleaned_data['user'] = usr
if self.cleaned_data.get('avatar'):
avatar = Image.open(StringIO(self.cleaned_data['avatar'].read()))
avatar.resize((63,63), Image.ANTIALIAS)
output_avatar = StringIO()
avatar.save(output_avatar)
self.cleaned_data['avatar'].write(output_avatar.read())
return super(ProfileForm, self).save()