Revision 1808f7bc snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
1 |
# Copyright 2011-2012 GRNET S.A. All rights reserved.
|
|
1 |
# Copyright 2011, 2012, 2013 GRNET S.A. All rights reserved.
|
|
2 | 2 |
# |
3 | 3 |
# Redistribution and use in source and binary forms, with or |
4 | 4 |
# without modification, are permitted provided that the following |
... | ... | |
58 | 58 |
from astakos.im.util import reserved_verified_email, model_to_dict |
59 | 59 |
from astakos.im import auth_providers |
60 | 60 |
from astakos.im import settings |
61 |
from astakos.im import auth |
|
61 | 62 |
|
62 | 63 |
import astakos.im.messages as astakos_messages |
63 | 64 |
|
... | ... | |
73 | 74 |
re.IGNORECASE) |
74 | 75 |
|
75 | 76 |
|
76 |
class StoreUserMixin(object): |
|
77 |
|
|
78 |
def store_user(self, user, request=None): |
|
79 |
""" |
|
80 |
WARNING: this should be wrapped inside a transactional view/method. |
|
81 |
""" |
|
82 |
user.save() |
|
83 |
self.post_store_user(user, request) |
|
84 |
return user |
|
85 |
|
|
86 |
def post_store_user(self, user, request): |
|
87 |
""" |
|
88 |
Interface method for descendant backends to be able to do stuff within |
|
89 |
the transaction enabled by store_user. |
|
90 |
""" |
|
91 |
pass |
|
92 |
|
|
93 |
|
|
94 |
class LocalUserCreationForm(UserCreationForm, StoreUserMixin): |
|
77 |
class LocalUserCreationForm(UserCreationForm): |
|
95 | 78 |
""" |
96 | 79 |
Extends the built in UserCreationForm in several ways: |
97 | 80 |
|
... | ... | |
177 | 160 |
raise forms.ValidationError(_( |
178 | 161 |
astakos_messages.CAPTCHA_VALIDATION_ERR)) |
179 | 162 |
|
180 |
def post_store_user(self, user, request=None): |
|
181 |
""" |
|
182 |
Interface method for descendant backends to be able to do stuff within |
|
183 |
the transaction enabled by store_user. |
|
184 |
""" |
|
185 |
user.add_auth_provider('local', auth_backend='astakos') |
|
186 |
user.set_password(self.cleaned_data['password1']) |
|
163 |
def create_user(self): |
|
164 |
try: |
|
165 |
data = self.cleaned_data |
|
166 |
except AttributeError: |
|
167 |
self.is_valid() |
|
168 |
data = self.cleaned_data |
|
187 | 169 |
|
188 |
def save(self, commit=True, **kwargs): |
|
189 |
""" |
|
190 |
Saves the email, first_name and last_name properties, after the normal |
|
191 |
save behavior is complete. |
|
192 |
""" |
|
193 |
user = super(LocalUserCreationForm, self).save(commit=False, **kwargs) |
|
194 |
user.has_signed_terms = True |
|
195 |
user.date_signed_terms = datetime.now() |
|
196 |
user.renew_token() |
|
197 |
if commit: |
|
198 |
user.save(**kwargs) |
|
199 |
logger.info('Created user %s', user.log_display) |
|
170 |
user = auth.make_local_user( |
|
171 |
email=data['email'], password=data['password1'], |
|
172 |
first_name=data['first_name'], last_name=data['last_name'], |
|
173 |
has_signed_terms=True) |
|
200 | 174 |
return user |
201 | 175 |
|
202 | 176 |
|
203 |
class ThirdPartyUserCreationForm(forms.ModelForm, StoreUserMixin):
|
|
177 |
class ThirdPartyUserCreationForm(forms.ModelForm): |
|
204 | 178 |
email = forms.EmailField( |
205 | 179 |
label='Contact email', |
206 | 180 |
help_text='This is needed for contact purposes. ' |
... | ... | |
264 | 238 |
def _get_pending_user(self): |
265 | 239 |
return PendingThirdPartyUser.objects.get(token=self.third_party_token) |
266 | 240 |
|
267 |
def post_store_user(self, user, request=None): |
|
241 |
def create_user(self): |
|
242 |
try: |
|
243 |
data = self.cleaned_data |
|
244 |
except AttributeError: |
|
245 |
self.is_valid() |
|
246 |
data = self.cleaned_data |
|
247 |
|
|
248 |
user = auth.make_user( |
|
249 |
email=data["email"], |
|
250 |
first_name=data["first_name"], last_name=data["last_name"], |
|
251 |
has_signed_terms=True) |
|
268 | 252 |
pending = self._get_pending_user() |
269 | 253 |
provider = pending.get_provider(user) |
270 | 254 |
provider.add_to_user() |
271 | 255 |
pending.delete() |
272 |
|
|
273 |
def save(self, commit=True, **kwargs): |
|
274 |
user = super(ThirdPartyUserCreationForm, self).save(commit=False, |
|
275 |
**kwargs) |
|
276 |
user.set_unusable_password() |
|
277 |
user.renew_token() |
|
278 |
user.has_signed_terms = True |
|
279 |
user.date_signed_terms = datetime.now() |
|
280 |
if commit: |
|
281 |
user.save(**kwargs) |
|
282 |
logger.info('Created user %s' % user.log_display) |
|
283 | 256 |
return user |
284 | 257 |
|
285 | 258 |
|
Also available in: Unified diff