Revision 279d6e51 snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
127 | 127 |
for pkey, value in perms.iteritems(): |
128 | 128 |
attr = 'is_available_for_%s' % pkey.lower() |
129 | 129 |
if getattr(provider, attr)() != value: |
130 |
msg = provider.get_message("NOT_ACTIVE_FOR_" + pkey.upper()) |
|
131 |
messages.error(request, msg) |
|
130 |
#TODO: add session message |
|
132 | 131 |
return HttpResponseRedirect(reverse('login')) |
133 | 132 |
return func(request, *args) |
134 | 133 |
return wrapper |
... | ... | |
195 | 194 |
if request.user.is_authenticated(): |
196 | 195 |
return HttpResponseRedirect(reverse('astakos.im.views.edit_profile')) |
197 | 196 |
|
198 |
third_party_token = request.GET.get('key', False) |
|
199 |
if third_party_token: |
|
200 |
messages.info(request, astakos_messages.AUTH_PROVIDER_LOGIN_TO_ADD) |
|
201 |
|
|
202 | 197 |
return render_response( |
203 | 198 |
template_name, |
204 | 199 |
login_form = LoginForm(request=request), |
... | ... | |
367 | 362 |
|
368 | 363 |
@transaction.commit_manually |
369 | 364 |
@require_http_methods(["GET", "POST"]) |
370 |
def signup(request, template_name='im/signup.html', |
|
371 |
on_success='im/signup_complete.html', extra_context=None, |
|
372 |
on_success_redirect='/im/profile/', |
|
373 |
backend=None): |
|
365 |
def signup(request, template_name='im/signup.html', on_success='im/signup_complete.html', extra_context=None, backend=None): |
|
374 | 366 |
""" |
375 | 367 |
Allows a user to create a local account. |
376 | 368 |
|
... | ... | |
410 | 402 |
return HttpResponseRedirect(reverse('edit_profile')) |
411 | 403 |
|
412 | 404 |
provider = get_query(request).get('provider', 'local') |
405 |
if not auth_providers.get_provider(provider).is_available_for_create(): |
|
406 |
raise PermissionDenied |
|
407 |
|
|
413 | 408 |
id = get_query(request).get('id') |
414 | 409 |
try: |
415 | 410 |
instance = AstakosUser.objects.get(id=id) if id else None |
... | ... | |
423 | 418 |
provider = pending.provider |
424 | 419 |
instance = pending.get_user_instance() |
425 | 420 |
|
426 |
if not auth_providers.get_provider(provider).is_available_for_create(): |
|
427 |
raise PermissionDenied |
|
428 |
|
|
429 | 421 |
try: |
430 | 422 |
if not backend: |
431 | 423 |
backend = get_backend(request) |
... | ... | |
433 | 425 |
except Exception, e: |
434 | 426 |
form = SimpleBackend(request).get_signup_form(provider) |
435 | 427 |
messages.error(request, e) |
436 |
|
|
437 | 428 |
if request.method == 'POST': |
438 | 429 |
if form.is_valid(): |
439 | 430 |
user = form.save(commit=False) |
... | ... | |
460 | 451 |
return response |
461 | 452 |
messages.add_message(request, status, message) |
462 | 453 |
transaction.commit() |
463 |
return HttpResponseRedirect(on_success_redirect) |
|
464 |
|
|
454 |
return render_response( |
|
455 |
on_success, |
|
456 |
context_instance=get_context( |
|
457 |
request, |
|
458 |
extra_context |
|
459 |
) |
|
460 |
) |
|
465 | 461 |
except SendMailError, e: |
466 | 462 |
logger.exception(e) |
467 | 463 |
status = messages.ERROR |
... | ... | |
474 | 470 |
messages.error(request, message) |
475 | 471 |
logger.exception(e) |
476 | 472 |
transaction.rollback() |
477 |
|
|
478 | 473 |
return render_response(template_name, |
479 | 474 |
signup_form=form, |
480 | 475 |
third_party_token=third_party_token, |
... | ... | |
584 | 579 |
try: |
585 | 580 |
user = AstakosUser.objects.get(auth_token=token) |
586 | 581 |
except AstakosUser.DoesNotExist: |
587 |
messages.error(request, _(astakos_messages.ACCOUNT_UNKNOWN)) |
|
588 |
return HttpResponseRedirect(reverse('index')) |
|
582 |
return HttpResponseBadRequest(_(astakos_messages.ACCOUNT_UNKNOWN)) |
|
589 | 583 |
|
590 | 584 |
if user.is_active: |
591 | 585 |
message = _(astakos_messages.ACCOUNT_ALREADY_ACTIVE) |
592 | 586 |
messages.error(request, message) |
593 |
return HttpResponseRedirect(reverse('index'))
|
|
587 |
return index(request)
|
|
594 | 588 |
|
595 | 589 |
try: |
596 |
activate_func(user, greeting_email_template_name, |
|
597 |
helpdesk_email_template_name, verify_email=True) |
|
590 |
activate_func(user, greeting_email_template_name, helpdesk_email_template_name, verify_email=True) |
|
598 | 591 |
response = prepare_response(request, user, next, renew=True) |
599 | 592 |
transaction.commit() |
600 |
messages.success(request, astakos_messages.ACCOUNT_ACTIVATED) |
|
601 |
return HttpResponseRedirect(reverse('edit_profile')) |
|
593 |
return response |
|
602 | 594 |
except SendMailError, e: |
603 | 595 |
message = e.message |
604 | 596 |
messages.add_message(request, messages.ERROR, message) |
605 | 597 |
transaction.rollback() |
606 |
return HttpResponseRedirect(reverse('index'))
|
|
598 |
return index(request)
|
|
607 | 599 |
except BaseException, e: |
608 | 600 |
status = messages.ERROR |
609 | 601 |
message = _(astakos_messages.GENERIC_ERROR) |
610 | 602 |
messages.add_message(request, messages.ERROR, message) |
611 | 603 |
logger.exception(e) |
612 | 604 |
transaction.rollback() |
613 |
return HttpResponseRedirect(reverse('index'))
|
|
605 |
return index(request)
|
|
614 | 606 |
|
615 | 607 |
|
616 | 608 |
@require_http_methods(["GET", "POST"]) |
... | ... | |
670 | 662 |
confirm_template_name='registration/email_change_done.html', |
671 | 663 |
extra_context=None): |
672 | 664 |
extra_context = extra_context or {} |
673 |
|
|
674 |
|
|
675 | 665 |
if activation_key: |
676 | 666 |
try: |
677 | 667 |
user = EmailChange.objects.change_email(activation_key) |
... | ... | |
681 | 671 |
auth_logout(request) |
682 | 672 |
response = prepare_response(request, user) |
683 | 673 |
transaction.commit() |
684 |
return HttpResponseRedirect(reverse('edit_profile'))
|
|
674 |
return response
|
|
685 | 675 |
except ValueError, e: |
686 | 676 |
messages.error(request, e) |
687 |
transaction.rollback() |
|
688 |
return HttpResponseRedirect(reverse('index')) |
|
689 |
|
|
690 | 677 |
return render_response(confirm_template_name, |
691 |
modified_user=user if 'user' in locals() \ |
|
692 |
else None, context_instance=get_context(request, |
|
678 |
modified_user=user if 'user' in locals( |
|
679 |
) else None, |
|
680 |
context_instance=get_context(request, |
|
693 | 681 |
extra_context)) |
694 | 682 |
|
695 | 683 |
if not request.user.is_authenticated(): |
696 | 684 |
path = quote(request.get_full_path()) |
697 | 685 |
url = request.build_absolute_uri(reverse('index')) |
698 | 686 |
return HttpResponseRedirect(url + '?next=' + path) |
699 |
|
|
700 |
# clean up expired email changes |
|
701 |
if request.user.email_change_is_pending(): |
|
702 |
change = request.user.emailchanges.get() |
|
703 |
if change.activation_key_expired(): |
|
704 |
change.delete() |
|
705 |
transaction.commit() |
|
706 |
return HttpResponseRedirect(reverse('email_change')) |
|
707 |
|
|
708 | 687 |
form = EmailChangeForm(request.POST or None) |
709 | 688 |
if request.method == 'POST' and form.is_valid(): |
710 | 689 |
try: |
711 |
# delete pending email changes |
|
712 |
request.user.emailchanges.all().delete() |
|
713 | 690 |
ec = form.save(email_template_name, request) |
714 | 691 |
except SendMailError, e: |
715 | 692 |
msg = e |
716 | 693 |
messages.error(request, msg) |
717 | 694 |
transaction.rollback() |
718 |
return HttpResponseRedirect(reverse('edit_profile')) |
|
695 |
except IntegrityError, e: |
|
696 |
msg = _(astakos_messages.PENDING_EMAIL_CHANGE_REQUEST) |
|
697 |
messages.error(request, msg) |
|
719 | 698 |
else: |
720 | 699 |
msg = _(astakos_messages.EMAIL_CHANGE_REGISTERED) |
721 | 700 |
messages.success(request, msg) |
722 | 701 |
transaction.commit() |
723 |
return HttpResponseRedirect(reverse('edit_profile')) |
|
724 |
|
|
725 |
if request.user.email_change_is_pending(): |
|
726 |
messages.warning(request, astakos_messages.PENDING_EMAIL_CHANGE_REQUEST) |
|
727 |
|
|
728 | 702 |
return render_response( |
729 | 703 |
form_template_name, |
730 | 704 |
form=form, |
... | ... | |
734 | 708 |
|
735 | 709 |
def send_activation(request, user_id, template_name='im/login.html', extra_context=None): |
736 | 710 |
|
737 |
if request.user.is_authenticated(): |
|
738 |
messages.error(request, 'You are already signed in.') |
|
739 |
return HttpResponseRedirect(reverse('edit_profile')) |
|
740 |
|
|
741 | 711 |
if settings.MODERATION_ENABLED: |
742 | 712 |
raise PermissionDenied |
743 | 713 |
|
... | ... | |
751 | 721 |
send_activation_func(u) |
752 | 722 |
msg = _(astakos_messages.ACTIVATION_SENT) |
753 | 723 |
messages.success(request, msg) |
754 |
return HttpResponseRedirect('/im/') |
|
755 |
|
|
756 | 724 |
except SendMailError, e: |
757 | 725 |
messages.error(request, e) |
758 | 726 |
return render_response( |
... | ... | |
1509 | 1477 |
template='im/how_it_works.html', |
1510 | 1478 |
context_instance=get_context(request),) |
1511 | 1479 |
|
1512 |
def test(v): |
|
1513 |
res = 'foo' |
|
1514 |
return res |
|
1480 |
|
Also available in: Unified diff