views.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. from django.conf import settings
  2. from django.contrib import messages
  3. from django.contrib.auth import login as auth_login, logout as auth_logout, update_session_auth_hash
  4. from django.contrib.auth.decorators import login_required
  5. from django.core.urlresolvers import reverse
  6. from django.http import HttpResponseRedirect
  7. from django.shortcuts import redirect, render, resolve_url
  8. from django.utils.http import is_safe_url
  9. from secrets.forms import UserKeyForm
  10. from secrets.models import UserKey
  11. from .forms import LoginForm, PasswordChangeForm
  12. #
  13. # Login/logout
  14. #
  15. def login(request):
  16. if request.method == 'POST':
  17. form = LoginForm(request, data=request.POST)
  18. if form.is_valid():
  19. # Determine where to direct user after successful login
  20. redirect_to = request.POST.get('next', '')
  21. if not is_safe_url(url=redirect_to, host=request.get_host()):
  22. redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
  23. # Authenticate user
  24. auth_login(request, form.get_user())
  25. messages.info(request, "Logged in as {0}.".format(request.user))
  26. return HttpResponseRedirect(redirect_to)
  27. else:
  28. form = LoginForm()
  29. return render(request, 'login.html', {
  30. 'form': form,
  31. })
  32. def logout(request):
  33. auth_logout(request)
  34. messages.info(request, "You have logged out.")
  35. return HttpResponseRedirect(reverse('home'))
  36. #
  37. # User profiles
  38. #
  39. @login_required()
  40. def profile(request):
  41. return render(request, 'users/profile.html', {
  42. })
  43. @login_required()
  44. def change_password(request):
  45. if request.method == 'POST':
  46. form = PasswordChangeForm(user=request.user, data=request.POST)
  47. if form.is_valid():
  48. form.save()
  49. update_session_auth_hash(request, form.user)
  50. messages.success(request, "Your password has been changed successfully.")
  51. return redirect('users:profile')
  52. else:
  53. form = PasswordChangeForm(user=request.user)
  54. return render(request, 'users/change_password.html', {
  55. 'form': form,
  56. })
  57. @login_required()
  58. def userkey(request):
  59. try:
  60. userkey = UserKey.objects.get(user=request.user)
  61. except UserKey.DoesNotExist:
  62. userkey = None
  63. return render(request, 'users/userkey.html', {
  64. 'userkey': userkey,
  65. })
  66. @login_required()
  67. def userkey_edit(request):
  68. try:
  69. userkey = UserKey.objects.get(user=request.user)
  70. except UserKey.DoesNotExist:
  71. userkey = UserKey(user=request.user)
  72. if request.method == 'POST':
  73. form = UserKeyForm(data=request.POST, instance=userkey)
  74. if form.is_valid():
  75. uk = form.save(commit=False)
  76. uk.user = request.user
  77. uk.save()
  78. messages.success(request, "Your user key has been saved.")
  79. return redirect('users:userkey')
  80. else:
  81. form = UserKeyForm(instance=userkey)
  82. return render(request, 'users/userkey_edit.html', {
  83. 'userkey': userkey,
  84. 'form': form,
  85. })
  86. @login_required()
  87. def recent_activity(request):
  88. return render(request, 'users/recent_activity.html', {
  89. 'recent_activity': request.user.actions.all()[:50]
  90. })