usercp.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from django.contrib import messages
  2. from django.db import transaction
  3. from django.shortcuts import redirect, render as django_render
  4. from django.utils.translation import ugettext as _
  5. from misago.users.decorators import deny_guests
  6. from misago.users.forms.usercp import (ChangeForumOptionsForm,
  7. ChangeUsernameForm,
  8. ChangeEmailPasswordForm)
  9. from misago.users.sites import usercp
  10. from misago.users.namechanges import UsernameChanges
  11. def render(request, template, context=None):
  12. context = context or {}
  13. context['pages'] = usercp.get_pages(request)
  14. for page in context['pages']:
  15. if page['is_active']:
  16. context['active_page'] = page
  17. break
  18. return django_render(request, template, context)
  19. @deny_guests
  20. def change_forum_options(request):
  21. form = ChangeForumOptionsForm(instance=request.user)
  22. if request.method == 'POST':
  23. form = ChangeForumOptionsForm(request.POST, instance=request.user)
  24. if form.is_valid():
  25. form.save()
  26. message = _("Your forum options have been changed.")
  27. messages.success(request, message)
  28. return redirect('misago:usercp_change_forum_options')
  29. return render(request, 'misago/usercp/change_forum_options.html',
  30. {'form': form})
  31. @deny_guests
  32. @transaction.atomic()
  33. def change_username(request):
  34. namechanges = UsernameChanges(request.user)
  35. form = ChangeUsernameForm()
  36. if request.method == 'POST' and namechanges.left:
  37. form = ChangeUsernameForm(request.POST, user=request.user)
  38. if form.is_valid():
  39. request.user.set_username(form.cleaned_data['new_username'])
  40. request.user.save(update_fields=['username', 'username_slug'])
  41. message = _("Your username has been changed.")
  42. messages.success(request, message)
  43. return redirect('misago:usercp_change_username')
  44. return render(request, 'misago/usercp/change_username.html', {
  45. 'form': form,
  46. 'changes_left': namechanges.left,
  47. 'next_change_on': namechanges.next_on
  48. })
  49. @deny_guests
  50. def change_email_password(request):
  51. form = ChangeEmailPasswordForm()
  52. if request.method == 'POST':
  53. form = ChangeEmailPasswordForm(request.POST, user=request.user)
  54. if form.is_valid():
  55. pass
  56. return render(request, 'misago/usercp/change_email_password.html',
  57. {'form': form})