Revision ef20ea07 snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
52 52
from django.db.utils import IntegrityError
53 53
from django.contrib.auth.views import password_change
54 54
from django.core.exceptions import ValidationError
55
from django.db.models import Q
56 55
from django.views.decorators.http import require_http_methods
57 56

  
58 57
from astakos.im.models import AstakosUser, Invitation, ApprovalTerms
59 58
from astakos.im.activation_backends import get_backend, SimpleBackend
60 59
from astakos.im.util import get_context, prepare_response, set_cookie, get_query
61 60
from astakos.im.forms import *
62
from astakos.im.functions import send_greeting, send_feedback, SendMailError, \
63
    invite as invite_func, logout as auth_logout, activate as activate_func, switch_account_to_shibboleth
64
from astakos.im.settings import DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL, COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, LOGOUT_NEXT, LOGGING_LEVEL
61
from astakos.im.functions import (send_greeting, send_feedback, SendMailError,
62
    invite as invite_func, logout as auth_logout, activate as activate_func
63
)
64
from astakos.im.settings import (DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL,
65
    COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, LOGOUT_NEXT, LOGGING_LEVEL
66
)
65 67

  
66 68
logger = logging.getLogger(__name__)
67 69

  
......
137 139
    template_name = login_template_name
138 140
    if request.user.is_authenticated():
139 141
        return HttpResponseRedirect(reverse('astakos.im.views.edit_profile'))
140
    return render_response(template_name,
141
                           login_form = LoginForm(request=request),
142
                           context_instance = get_context(request, extra_context))
142
    
143
    return render_response(
144
        template_name,
145
        login_form = LoginForm(request=request),
146
        context_instance = get_context(request, extra_context)
147
    )
143 148

  
144 149
@require_http_methods(["GET", "POST"])
145 150
@login_required
......
462 467
        return index(request)
463 468
    
464 469
    try:
465
        local_user = AstakosUser.objects.get(~Q(id = user.id), email=user.email, is_active=True)
466
    except AstakosUser.DoesNotExist:
467
        try:
468
            activate_func(user, greeting_email_template_name, helpdesk_email_template_name, verify_email=True)
469
            response = prepare_response(request, user, next, renew=True)
470
            transaction.commit()
471
            return response
472
        except SendMailError, e:
473
            message = e.message
474
            messages.add_message(request, messages.ERROR, message)
475
            transaction.rollback()
476
            return index(request)
477
        except BaseException, e:
478
            status = messages.ERROR
479
            message = _('Something went wrong.')
480
            messages.add_message(request, messages.ERROR, message)
481
            logger.exception(e)
482
            transaction.rollback()
483
            return index(request)
484
    else:
485
        try:
486
            user = switch_account_to_shibboleth(user, local_user, greeting_email_template_name)
487
            response = prepare_response(request, user, next, renew=True)
488
            transaction.commit()
489
            return response
490
        except SendMailError, e:
491
            message = e.message
492
            messages.add_message(request, messages.ERROR, message)
493
            transaction.rollback()
494
            return index(request)
495
        except BaseException, e:
496
            status = messages.ERROR
497
            message = _('Something went wrong.')
498
            messages.add_message(request, messages.ERROR, message)
499
            logger.exception(e)
500
            transaction.rollback()
501
            return index(request)
470
        activate_func(user, greeting_email_template_name, helpdesk_email_template_name, verify_email=True)
471
        response = prepare_response(request, user, next, renew=True)
472
        transaction.commit()
473
        return response
474
    except SendMailError, e:
475
        message = e.message
476
        messages.add_message(request, messages.ERROR, message)
477
        transaction.rollback()
478
        return index(request)
479
    except BaseException, e:
480
        status = messages.ERROR
481
        message = _('Something went wrong.')
482
        messages.add_message(request, messages.ERROR, message)
483
        logger.exception(e)
484
        transaction.rollback()
485
        return index(request)
502 486

  
503 487
@require_http_methods(["GET", "POST"])
504 488
def approval_terms(request, term_id=None, template_name='im/approval_terms.html', extra_context={}):

Also available in: Unified diff