Revision 0a569195 snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
55 55

  
56 56
from astakos.im.models import AstakosUser, Invitation, ApprovalTerms
57 57
from astakos.im.activation_backends import get_backend, SimpleBackend
58
from astakos.im.util import get_context, prepare_response, set_cookie, has_signed_terms
58
from astakos.im.util import get_context, prepare_response, set_cookie, has_signed_terms, get_query
59 59
from astakos.im.forms import *
60 60
from astakos.im.functions import send_greeting, send_feedback, SendMailError
61 61
from astakos.im.settings import DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL, COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, LOGOUT_NEXT
......
310 310
    if request.user.is_authenticated():
311 311
        return HttpResponseRedirect(reverse('astakos.im.views.index'))
312 312
    
313
    query_dict = request.__getattribute__(request.method)
314
    provider = query_dict.get('provider', 'local')
313
    provider = get_query(request).get('provider', 'local')
315 314
    try:
316 315
        if not backend:
317 316
            backend = get_backend(request)
318 317
        form = backend.get_signup_form(provider)
319
    except (Invitation.DoesNotExist, ValueError), e:
318
    except Exception, e:
320 319
        form = SimpleBackend(request).get_signup_form(provider)
321 320
        messages.add_message(request, messages.ERROR, e)
322 321
    if request.method == 'POST':
......
341 340
                status = messages.ERROR
342 341
                message = _('Something went wrong.')
343 342
                messages.add_message(request, status, message)
343
                logger.exception(e)
344 344
    return render_response(template_name,
345 345
                           signup_form = form,
346
                           provider = provider,
346 347
                           context_instance=get_context(request, extra_context))
347 348

  
348 349
@login_required
......
433 434
        user = AstakosUser.objects.get(auth_token=token)
434 435
    except AstakosUser.DoesNotExist:
435 436
        return HttpResponseBadRequest(_('No such user'))
436

  
437
    user.is_active = True
438
    user.email_verified = True
439
    user.save()
437
    
438
    try:
439
        local_user = AstakosUser.objects.get(email=user.email, is_active=True, provider='local')
440
    except AstakosUser.DoesNotExist:
441
        user.is_active = True
442
        user.email_verified = True
443
        user.save()
444
    else:
445
        # switch the local account to shibboleth one
446
        local_user.provider = 'shibboleth'
447
        local_user.set_unusable_password()
448
        local_user.third_party_identifier = user.third_party_identifier
449
        local_user.save()
450
        user.delete()
451
        user = local_user
452
    
440 453
    try:
441 454
        send_greeting(user, email_template_name)
442 455
        response = prepare_response(request, user, next, renew=True)
443 456
        transaction.commit()
444 457
        return response
445
    except SendEmailError, e:
458
    except SendMailError, e:
446 459
        message = e.message
447 460
        messages.add_message(request, messages.ERROR, message)
448 461
        transaction.rollback()

Also available in: Unified diff