| author | verrierj |
| Mon, 09 Jan 2012 12:44:15 +0100 | |
| changeset 342 | 17d615b49a91 |
| parent 333 | 4ddf8c0eeab4 |
| child 511 | 2edec83f1bd8 |
| permissions | -rw-r--r-- |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
1 |
from django import forms |
| 169 | 2 |
from django.conf import settings |
3 |
from django.contrib.auth.forms import UserCreationForm, UserChangeForm |
|
4 |
from django.contrib.auth.models import User |
|
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
5 |
from django.forms.util import ErrorList |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
6 |
from django.utils.translation import gettext as _ |
| 155 | 7 |
from models import Ldt |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
8 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
9 |
|
| 156 | 10 |
class LdtForm(UserCreationForm): |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
11 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
12 |
class Meta: |
| 155 | 13 |
model = Ldt |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
14 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
15 |
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
16 |
initial=None, error_class=ErrorList, label_suffix=':', |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
17 |
empty_permitted=False, instance=None): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
18 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
19 |
if instance: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
20 |
initial = initial or {} |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
21 |
|
| 156 | 22 |
super(LdtForm, self).__init__(data, files, auto_id, prefix, |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
23 |
initial, error_class, label_suffix, empty_permitted, instance) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
24 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
25 |
if instance: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
26 |
self.fields['password1'].required = False |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
27 |
self.fields['password1'].label = _('New password') |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
28 |
self.fields['password2'].required = False |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
29 |
self.fields['password2'].label = _('New password confirmation') |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
30 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
31 |
self._password_change = True |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
32 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
33 |
def clean_username(self): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
34 |
if self.instance: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
35 |
return self.cleaned_data['username'] |
| 156 | 36 |
return super(LdtForm, self).clean_username() |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
37 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
38 |
def clean_password2(self): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
39 |
if self.instance and self.cleaned_data['password1'] == '' and self.cleaned_data['password2'] == '': |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
40 |
self._password_change = False |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
41 |
return u'' |
| 156 | 42 |
return super(LdtForm, self).clean_password2() |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
43 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
44 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
45 |
def save(self, commit=True): |
| 156 | 46 |
Super = self._password_change and LdtForm or UserCreationForm |
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
47 |
user = super(Super, self).save(commit=False) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
48 |
# if user.pk != None: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
49 |
# self.save_m2m() |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
50 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
51 |
if commit: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
52 |
user.save() |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
53 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
54 |
return user |
|
130
1cc949de2d1f
Useless code removed. Iri group finally removed from the model. User's templates cleaned. Little css changed for home.
cavaliet
parents:
128
diff
changeset
|
55 |
|
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
56 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
57 |
class EmailChangeForm(forms.Form): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
58 |
email1 = forms.EmailField(label=_("E-mail"), max_length=75) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
59 |
email2 = forms.EmailField(label=_("E-mail"), max_length=75) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
60 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
61 |
def __init__(self, user=None, *args, **kwargs): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
62 |
self.user = user |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
63 |
super(EmailChangeForm, self).__init__(*args, **kwargs) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
64 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
65 |
def clean_email2(self): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
66 |
email1 = self.cleaned_data.get('email1') |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
67 |
email2 = self.cleaned_data.get('email2') |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
68 |
if email1 and email2: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
69 |
if email1 != email2: |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
70 |
raise forms.ValidationError(_("The two emails didn't match.")) |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
71 |
return email2 |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
72 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
73 |
|
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
74 |
def save(self): |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
75 |
self.user.email = self.cleaned_data['email1'] |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
76 |
self.user.save() |
|
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
77 |
return self.user |
|
154
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
78 |
|
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
79 |
|
|
154
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
80 |
class NameChangeForm(forms.Form): |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
81 |
first_name = forms.CharField(label=_("First name"), max_length=30) |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
82 |
last_name = forms.CharField(label=_("Last name"), max_length=30) |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
83 |
|
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
84 |
def __init__(self, user=None, *args, **kwargs): |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
85 |
self.user = user |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
86 |
super(NameChangeForm, self).__init__(*args, **kwargs) |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
87 |
|
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
88 |
|
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
89 |
def save(self): |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
90 |
self.user.first_name = self.cleaned_data['first_name'] |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
91 |
self.user.last_name = self.cleaned_data['last_name'] |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
92 |
self.user.save() |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
93 |
return self.user |
|
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
94 |
|
| 165 | 95 |
|
| 169 | 96 |
class ProfileForm(UserChangeForm): |
97 |
||
98 |
def __init__(self, user=None, *args, **kwargs): |
|
99 |
#self.user = user |
|
100 |
super(ProfileForm, self).__init__(*args, **kwargs) |
|
101 |
||
102 |
||
103 |
class Meta: |
|
104 |
model = User |
|
105 |
fields = ('username', 'email', 'first_name', 'last_name') |
|
106 |
||
107 |
||
108 |
class LanguageChangeForm(forms.Form): |
|
109 |
language = forms.ChoiceField(label=_("Language"), choices=settings.LANGUAGES) |
|
|
154
2f83bcf58cc1
Added a form enabling the user to change his name #1
verrierj
parents:
130
diff
changeset
|
110 |
|
| 165 | 111 |
def __init__(self, user=None, *args, **kwargs): |
112 |
self.user = user |
|
| 169 | 113 |
super(LanguageChangeForm, self).__init__(*args, **kwargs) |
| 165 | 114 |
|
| 169 | 115 |
def save(self): |
|
174
43748b6b0678
Add a default profile instead of get_or_create_profile
verrierj
parents:
169
diff
changeset
|
116 |
profile = self.user.get_profile() |
| 169 | 117 |
profile.language = self.cleaned_data['language'] |
118 |
profile.save() |
|
119 |
return self.user |
|
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
120 |
|
| 325 | 121 |
|
122 |
class PictureForm(forms.Form): |
|
| 327 | 123 |
image = forms.ImageField(label=_("Profile picture"), required=False) |
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
124 |
|
| 325 | 125 |
def __init__(self, model=None, *args, **kwargs): |
126 |
self.model = model |
|
127 |
super(PictureForm, self).__init__(*args, **kwargs) |
|
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
128 |
|
|
333
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
129 |
def clean_image(self): |
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
130 |
image = self.cleaned_data['image'] |
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
131 |
|
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
132 |
if image and image.size > settings.PROFILE_IMG_MAX_SIZE: |
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
133 |
raise forms.ValidationError(_("Image size is limited to %s" % settings.PROFILE_IMG_MAX_SIZE)) |
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
134 |
|
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
135 |
return image |
|
4ddf8c0eeab4
Image size is checked before save + project image can be set manually
verrierj
parents:
327
diff
changeset
|
136 |
|
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
137 |
def save(self): |
| 325 | 138 |
|
| 327 | 139 |
if not self.cleaned_data['image']: |
140 |
return None |
|
141 |
||
| 325 | 142 |
class_name = self.model.__class__.__name__ |
|
342
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
143 |
if class_name == 'User' or class_name == 'Group': |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
144 |
instance_name = self.model.id |
| 325 | 145 |
img_container = self.model.get_profile() |
|
342
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
146 |
elif class_name == 'Content': |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
147 |
instance_name = self.model.iri_id |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
148 |
img_container = self.model |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
149 |
elif class_name == 'Project': |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
150 |
instance_name = self.model.ldt_id |
| 325 | 151 |
img_container = self.model |
| 327 | 152 |
|
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
153 |
# We change the file name and keep the extension. |
|
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
154 |
filename = self.cleaned_data['image'].name |
|
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
155 |
ext = filename.split(".")[-1] |
| 325 | 156 |
self.cleaned_data['image'].name = instance_name + "." + ext |
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
157 |
# We save the picture with the correct name |
| 325 | 158 |
img_container.image = self.cleaned_data['image'] |
159 |
img_container.save() |
|
| 327 | 160 |
return self.model |
| 325 | 161 |
|
| 169 | 162 |