Revision 683cf244 snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
49 | 49 |
from django.db import transaction |
50 | 50 |
from django.contrib.auth import logout as auth_logout |
51 | 51 |
from django.utils.http import urlencode |
52 |
from django.http import HttpResponseRedirect |
|
52 |
from django.http import HttpResponseRedirect, HttpResponseBadRequest
|
|
53 | 53 |
from django.db.utils import IntegrityError |
54 | 54 |
|
55 | 55 |
from astakos.im.models import AstakosUser, Invitation |
56 | 56 |
from astakos.im.backends import get_backend |
57 | 57 |
from astakos.im.util import get_context, prepare_response, set_cookie |
58 | 58 |
from astakos.im.forms import * |
59 |
from astakos.im.functions import send_greeting |
|
59 | 60 |
from astakos.im.settings import DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL, COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, BASEURL, LOGOUT_NEXT |
60 | 61 |
from astakos.im.functions import invite as invite_func |
61 | 62 |
|
... | ... | |
396 | 397 |
response.write(render_to_string(template, context_instance=context)) |
397 | 398 |
return response |
398 | 399 |
|
399 |
def activate(request): |
|
400 |
@transaction.commit_manually |
|
401 |
def activate(request, email_template_name='im/welcome_email.txt', on_failure=''): |
|
400 | 402 |
""" |
401 |
Activates the user identified by the ``auth`` request parameter |
|
403 |
Activates the user identified by the ``auth`` request parameter, sends a welcome email |
|
404 |
and renews the user token. |
|
405 |
|
|
406 |
The view uses commit_manually decorator in order to ensure the user state will be updated |
|
407 |
only if the email will be send successfully. |
|
402 | 408 |
""" |
403 | 409 |
token = request.GET.get('auth') |
404 | 410 |
next = request.GET.get('next') |
405 | 411 |
try: |
406 | 412 |
user = AstakosUser.objects.get(auth_token=token) |
407 | 413 |
except AstakosUser.DoesNotExist: |
408 |
return HttpResponseBadRequest('No such user')
|
|
414 |
return HttpResponseBadRequest(_('No such user'))
|
|
409 | 415 |
|
410 | 416 |
user.is_active = True |
411 | 417 |
user.email_verified = True |
412 | 418 |
user.save() |
413 |
return prepare_response(request, user, next, renew=True) |
|
419 |
try: |
|
420 |
send_greeting(user, email_template_name) |
|
421 |
response = prepare_response(request, user, next, renew=True) |
|
422 |
transaction.commit() |
|
423 |
return response |
|
424 |
except (SMTPException, socket.error) as e: |
|
425 |
message = getattr(e, 'name') if hasattr(e, 'name') else e |
|
426 |
messages.add_message(request, messages.ERROR, message) |
|
427 |
transaction.rollback() |
|
428 |
return signup(request, on_failure='im/signup.html') |
Also available in: Unified diff