--- a/taskapp/forms/user.py Thu Mar 04 19:08:47 2010 +0530
+++ b/taskapp/forms/user.py Fri Mar 05 15:13:37 2010 +0530
@@ -1,5 +1,10 @@
#!/usr/bin/python2.5
+import os
+import PIL
+
+from pytask.taskapp.utilities.helper import get_key
+
from django import forms
from pytask.taskapp.models import GENDER_CHOICES, Profile
from registration.forms import RegistrationFormUniqueEmail
@@ -12,6 +17,28 @@
model = Profile
exclude = ('user','rights','dob','credits')
+ def clean_photo(self):
+ uploaded_photo = self.data.get('photo', None)
+ prev_photo = self.instance.photo
+ if uploaded_photo:
+ if uploaded_photo.size > 1048576:
+ raise forms.ValidationError('Images only smaller than 1MB allowed')
+ tmp_im_path = '/tmp/'+get_key()
+ tmp_file = open(tmp_im_path, 'w')
+ tmp_file.write(uploaded_photo.read())
+ tmp_file.close()
+ try:
+ PIL.Image.open(tmp_im_path)
+ except IOError:
+ raise forms.ValidationError('Image format unknown')
+ os.remove(tmp_im_path)
+
+ if prev_photo: os.remove(prev_photo.path)
+ return uploaded_photo
+ else:
+ return prev_photo
+
+
class RegistrationFormCustom(RegistrationFormUniqueEmail):
"""Used instead of RegistrationForm used by default django-registration backend, this adds date of birth and gender to the default django-registration RegistrationForm"""