author | Madhusudan.C.S <madhusudancs@gmail.com> |
Sat, 08 Jan 2011 02:14:29 +0530 | |
branch | buildout |
changeset 232 | eae55e6b109f |
parent 227 | 3c8f3b0e5b00 |
permissions | -rw-r--r-- |
227
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
2 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
3 |
import os |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
4 |
import PIL |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
5 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
6 |
from pytask.taskapp.utilities.helper import get_key |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
7 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
8 |
from django import forms |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
9 |
from pytask.taskapp.models import GENDER_CHOICES, Profile |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
10 |
from registration.forms import RegistrationFormUniqueEmail |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
11 |
from registration.models import RegistrationProfile |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
12 |
from pytask.taskapp.utilities.notification import create_notification |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
13 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
14 |
class UserProfileEditForm(forms.ModelForm): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
15 |
"""Form used to edit the profile of a user""" |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
16 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
17 |
class Meta: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
18 |
model = Profile |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
19 |
exclude = ('user','rights','dob','credits') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
20 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
21 |
def clean_photo(self): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
22 |
uploaded_photo = self.data.get('photo', None) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
23 |
prev_photo = self.instance.photo |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
24 |
if uploaded_photo: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
25 |
if uploaded_photo.size > 1048576: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
26 |
raise forms.ValidationError('Images only smaller than 1MB allowed') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
27 |
tmp_im_path = '/tmp/'+get_key() |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
28 |
tmp_file = open(tmp_im_path, 'w') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
29 |
tmp_file.write(uploaded_photo.read()) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
30 |
tmp_file.close() |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
31 |
try: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
32 |
PIL.Image.open(tmp_im_path) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
33 |
except IOError: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
34 |
raise forms.ValidationError('Image format unknown') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
35 |
os.remove(tmp_im_path) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
36 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
37 |
if prev_photo: os.remove(prev_photo.path) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
38 |
return uploaded_photo |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
39 |
else: |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
40 |
return prev_photo |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
41 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
42 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
43 |
class RegistrationFormCustom(RegistrationFormUniqueEmail): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
44 |
"""Used instead of RegistrationForm used by default django-registration backend, this adds date of birth and gender to the default django-registration RegistrationForm""" |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
45 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
46 |
dob = forms.DateField(help_text = "YYYY-MM-DD", required=True, label=u'date of birth') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
47 |
gender = forms.ChoiceField(choices = GENDER_CHOICES, required=True, label=u'gender') |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
48 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
49 |
def save(self,profile_callback=None): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
50 |
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],password=self.cleaned_data['password1'],email=self.cleaned_data['email']) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
51 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
52 |
new_profile = Profile(user=new_user,dob=self.cleaned_data['dob'],gender=self.cleaned_data['gender']) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
53 |
new_profile.save() |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
54 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
55 |
create_notification('NU',new_user) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
56 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
57 |
return new_user |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
58 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
59 |
def UserChoiceForm(choices, instance=None): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
60 |
""" take a list of users and return a choice form. |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
61 |
""" |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
62 |
|
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
63 |
class myForm(forms.Form): |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
64 |
user = forms.ChoiceField(choices, required=True) |
3c8f3b0e5b00
Add support for buildout and move the files to the directory to support buildout structure.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
65 |
return myForm(instance) if instance else myForm() |