Revision 23b9b72f snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
59 | 59 |
from astakos.im.util import get_context, prepare_response, set_cookie, get_query |
60 | 60 |
from astakos.im.forms import * |
61 | 61 |
from astakos.im.functions import send_greeting, send_feedback, SendMailError, \ |
62 |
invite as invite_func, logout as auth_logout, send_helpdesk_notification
|
|
62 |
invite as invite_func, logout as auth_logout, activate as activate_func, switch_account_to_shibboleth
|
|
63 | 63 |
from astakos.im.settings import DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL, COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, LOGOUT_NEXT, LOGGING_LEVEL |
64 | 64 |
|
65 | 65 |
logger = logging.getLogger(__name__) |
... | ... | |
431 | 431 |
return response |
432 | 432 |
|
433 | 433 |
@transaction.commit_manually |
434 |
def activate(request, email_template_name='im/welcome_email.txt', on_failure='im/signup.html', |
|
435 |
helpdesk_email_template_name='im/helpdesk_notification.txt'): |
|
434 |
def activate(request, email_template_name='im/welcome_email.txt', helpdesk_email_template_name='im/helpdesk_notification.txt'): |
|
436 | 435 |
""" |
437 | 436 |
Activates the user identified by the ``auth`` request parameter, sends a welcome email |
438 | 437 |
and renews the user token. |
... | ... | |
448 | 447 |
return HttpResponseBadRequest(_('No such user')) |
449 | 448 |
|
450 | 449 |
if user.is_active: |
451 |
message = 'Account already active.'
|
|
450 |
message = _('Account already active.')
|
|
452 | 451 |
messages.add_message(request, messages.ERROR, message) |
453 |
return render_response(on_failure)
|
|
452 |
return index(request)
|
|
454 | 453 |
|
455 |
notify_helpdesk = False |
|
456 | 454 |
try: |
457 | 455 |
local_user = AstakosUser.objects.get(~Q(id = user.id), email=user.email, is_active=True) |
458 | 456 |
except AstakosUser.DoesNotExist: |
459 |
user.is_active = True |
|
460 |
user.email_verified = True |
|
461 | 457 |
try: |
462 |
user.save() |
|
463 |
except ValidationError, e: |
|
464 |
return HttpResponseBadRequest(e) |
|
465 |
notify_helpdesk = True |
|
458 |
activate_func(user, email_template_name, helpdesk_email_template_name, verify_email=True) |
|
459 |
response = prepare_response(request, user, next, renew=True) |
|
460 |
transaction.commit() |
|
461 |
return response |
|
462 |
except SendMailError, e: |
|
463 |
message = e.message |
|
464 |
messages.add_message(request, messages.ERROR, message) |
|
465 |
transaction.rollback() |
|
466 |
return index(request) |
|
467 |
except BaseException, e: |
|
468 |
status = messages.ERROR |
|
469 |
message = _('Something went wrong.') |
|
470 |
messages.add_message(request, messages.ERROR, message) |
|
471 |
logger.exception(e) |
|
472 |
transaction.rollback() |
|
473 |
return index(request) |
|
466 | 474 |
else: |
467 |
# switch the existing account to shibboleth one |
|
468 |
if user.provider == 'shibboleth': |
|
469 |
local_user.provider = 'shibboleth' |
|
470 |
local_user.set_unusable_password() |
|
471 |
local_user.third_party_identifier = user.third_party_identifier |
|
472 |
try: |
|
473 |
local_user.save() |
|
474 |
except ValidationError, e: |
|
475 |
return HttpResponseBadRequest(e) |
|
476 |
user.delete() |
|
477 |
user = local_user |
|
478 |
|
|
479 |
try: |
|
480 |
if notify_helpdesk: |
|
481 |
send_helpdesk_notification(user, helpdesk_email_template_name) |
|
482 |
send_greeting(user, email_template_name) |
|
483 |
response = prepare_response(request, user, next, renew=True) |
|
484 |
transaction.commit() |
|
485 |
return response |
|
486 |
except SendMailError, e: |
|
487 |
message = e.message |
|
488 |
messages.add_message(request, messages.ERROR, message) |
|
489 |
transaction.rollback() |
|
490 |
return render_response(on_failure) |
|
491 |
except BaseException, e: |
|
492 |
status = messages.ERROR |
|
493 |
message = _('Something went wrong.') |
|
494 |
messages.add_message(request, messages.ERROR, message) |
|
495 |
logger.exception(e) |
|
496 |
transaction.rollback() |
|
497 |
return signup(request, on_failure) |
|
475 |
try: |
|
476 |
user = switch_account_to_shibboleth(user, local_user) |
|
477 |
send_greeting(user, email_template_name) |
|
478 |
response = prepare_response(request, user, next, renew=True) |
|
479 |
transaction.commit() |
|
480 |
return response |
|
481 |
except SendMailError, e: |
|
482 |
message = e.message |
|
483 |
messages.add_message(request, messages.ERROR, message) |
|
484 |
transaction.rollback() |
|
485 |
return index(request) |
|
486 |
except BaseException, e: |
|
487 |
status = messages.ERROR |
|
488 |
message = _('Something went wrong.') |
|
489 |
messages.add_message(request, messages.ERROR, message) |
|
490 |
logger.exception(e) |
|
491 |
transaction.rollback() |
|
492 |
return index(request) |
|
498 | 493 |
|
499 | 494 |
def approval_terms(request, term_id=None, template_name='im/approval_terms.html', extra_context={}): |
500 | 495 |
term = None |
Also available in: Unified diff