| author | ymh <ymh.work@gmail.com> |
| Fri, 24 May 2013 17:30:29 +0200 | |
| changeset 1195 | 81e5be7f10f9 |
| parent 1193 | cd67b17d257d |
| child 1219 | dd46f7a3b064 |
| 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 |
| 1191 | 3 |
from django.contrib.auth import get_user_model |
| 1193 | 4 |
from django.contrib.auth.forms import UserCreationForm, UserChangeForm |
5 |
from django.contrib.auth.models import Group |
|
6 |
from django.forms.util import ErrorList |
|
|
111
4535dafa6007
improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents:
63
diff
changeset
|
7 |
from django.utils.translation import gettext as _ |
|
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
|
8 |
|
| 1191 | 9 |
User = get_user_model() |
| 1193 | 10 |
|
11 |
class LdtForm(UserCreationForm): |
|
12 |
||
13 |
class Meta: |
|
14 |
model = User |
|
15 |
||
16 |
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, |
|
17 |
initial=None, error_class=ErrorList, label_suffix=':', |
|
18 |
empty_permitted=False, instance=None): |
|
19 |
||
20 |
if instance: |
|
21 |
initial = initial or {} |
|
22 |
||
23 |
super(LdtForm, self).__init__(data, files, auto_id, prefix, |
|
24 |
initial, error_class, label_suffix, empty_permitted, instance) |
|
25 |
||
26 |
if instance: |
|
27 |
self.fields['password1'].required = False |
|
28 |
self.fields['password1'].label = _('New password') |
|
29 |
self.fields['password2'].required = False |
|
30 |
self.fields['password2'].label = _('New password confirmation') |
|
31 |
||
32 |
self._password_change = True |
|
33 |
||
34 |
def clean_username(self): |
|
35 |
if self.instance: |
|
36 |
return self.cleaned_data['username'] |
|
37 |
return super(LdtForm, self).clean_username() |
|
38 |
||
39 |
def clean_password2(self): |
|
40 |
if self.instance and self.cleaned_data['password1'] == '' and self.cleaned_data['password2'] == '': |
|
41 |
self._password_change = False |
|
42 |
return u'' |
|
43 |
return super(LdtForm, self).clean_password2() |
|
44 |
||
45 |
||
46 |
def save(self, commit=True): |
|
47 |
Super = self._password_change and LdtForm or UserCreationForm |
|
48 |
user = super(Super, self).save(commit=False) |
|
49 |
# if user.pk != None: |
|
50 |
# self.save_m2m() |
|
51 |
||
52 |
if commit: |
|
53 |
user.save() |
|
54 |
||
55 |
return user |
|
56 |
||
57 |
||
58 |
class EmailChangeForm(forms.Form): |
|
59 |
email1 = forms.EmailField(label=_("E-mail"), max_length=75) |
|
60 |
email2 = forms.EmailField(label=_("E-mail"), max_length=75) |
|
61 |
||
62 |
def __init__(self, user=None, *args, **kwargs): |
|
63 |
self.user = user |
|
64 |
super(EmailChangeForm, self).__init__(*args, **kwargs) |
|
65 |
||
66 |
def clean_email2(self): |
|
67 |
email1 = self.cleaned_data.get('email1') |
|
68 |
email2 = self.cleaned_data.get('email2') |
|
69 |
if email1 and email2: |
|
70 |
if email1 != email2: |
|
71 |
raise forms.ValidationError(_("The two emails didn't match.")) |
|
72 |
return email2 |
|
73 |
||
74 |
||
75 |
def save(self): |
|
76 |
self.user.email = self.cleaned_data['email1'] |
|
77 |
self.user.save() |
|
78 |
return self.user |
|
79 |
||
80 |
||
81 |
class NameChangeForm(forms.Form): |
|
82 |
first_name = forms.CharField(label=_("First name"), max_length=30) |
|
83 |
last_name = forms.CharField(label=_("Last name"), max_length=30) |
|
84 |
||
85 |
def __init__(self, user=None, *args, **kwargs): |
|
86 |
self.user = user |
|
87 |
super(NameChangeForm, self).__init__(*args, **kwargs) |
|
88 |
||
89 |
||
90 |
def save(self): |
|
91 |
self.user.first_name = self.cleaned_data['first_name'] |
|
92 |
self.user.last_name = self.cleaned_data['last_name'] |
|
93 |
self.user.save() |
|
94 |
return self.user |
|
95 |
||
96 |
||
97 |
class ProfileForm(UserChangeForm): |
|
98 |
||
99 |
def __init__(self, user=None, *args, **kwargs): |
|
100 |
#self.user = user |
|
101 |
super(ProfileForm, self).__init__(*args, **kwargs) |
|
102 |
||
103 |
||
104 |
class Meta: |
|
105 |
model = User |
|
106 |
fields = ('username', 'email', 'first_name', 'last_name', 'password') |
|
107 |
||
108 |
||
109 |
class LanguageChangeForm(forms.Form): |
|
110 |
language = forms.ChoiceField(label=_("Language"), choices=settings.LANGUAGES) |
|
111 |
||
112 |
def __init__(self, user=None, *args, **kwargs): |
|
113 |
self.user = user |
|
114 |
super(LanguageChangeForm, self).__init__(*args, **kwargs) |
|
115 |
||
116 |
def save(self): |
|
| 1195 | 117 |
self.user.language = self.cleaned_data['language'] |
118 |
self.user.save() |
|
| 1193 | 119 |
return self.user |
| 325 | 120 |
|
121 |
class PictureForm(forms.Form): |
|
|
792
e4180c2d11eb
Modifications in order to download the thumbnail picture and put it as default picture when creating youtube, dailymotion or vimeo contents
grandjoncl
parents:
511
diff
changeset
|
122 |
image=forms.ImageField(label=_("Profile picture"), required=False) |
|
e4180c2d11eb
Modifications in order to download the thumbnail picture and put it as default picture when creating youtube, dailymotion or vimeo contents
grandjoncl
parents:
511
diff
changeset
|
123 |
url_image=forms.CharField(max_length=1024, 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__ |
| 1191 | 143 |
if isinstance(self.model, Group): |
| 511 | 144 |
instance_name = "%s" % self.model.id |
| 325 | 145 |
img_container = self.model.get_profile() |
| 1191 | 146 |
if isinstance(self.model, User): |
147 |
instance_name = "%s" % self.model.id |
|
148 |
img_container = self.model |
|
|
342
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
149 |
elif class_name == 'Content': |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
150 |
instance_name = self.model.iri_id |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
151 |
img_container = self.model |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
152 |
elif class_name == 'Project': |
|
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
333
diff
changeset
|
153 |
instance_name = self.model.ldt_id |
| 325 | 154 |
img_container = self.model |
| 327 | 155 |
|
|
314
1a8620e5ebb0
Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents:
174
diff
changeset
|
156 |
# 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
|
157 |
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
|
158 |
ext = filename.split(".")[-1] |
| 325 | 159 |
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
|
160 |
# We save the picture with the correct name |
| 325 | 161 |
img_container.image = self.cleaned_data['image'] |
162 |
img_container.save() |
|
| 327 | 163 |
return self.model |
| 169 | 164 |