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