usercp.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. from misago.users.sites import usercp
  9. from misago.users.namechanges import UsernameChanges
  10. def render(request, template, context=None):
  11. context = context or {}
  12. context['pages'] = usercp.get_pages(request)
  13. for page in context['pages']:
  14. if page['is_active']:
  15. context['active_page'] = page
  16. break
  17. return django_render(request, template, context)
  18. @deny_guests
  19. def change_forum_options(request):
  20. form = ChangeForumOptionsForm(instance=request.user)
  21. if request.method == 'POST':
  22. form = ChangeForumOptionsForm(request.POST, instance=request.user)
  23. if form.is_valid():
  24. form.save()
  25. message = _("Your forum options have been changed.")
  26. messages.success(request, message)
  27. return redirect('misago:usercp_change_forum_options')
  28. return render(request, 'misago/usercp/change_forum_options.html',
  29. {'form': form})
  30. @deny_guests
  31. @transaction.atomic()
  32. def change_username(request):
  33. namechanges = UsernameChanges(request.user)
  34. form = ChangeUsernameForm()
  35. if request.method == 'POST' and namechanges.left:
  36. form = ChangeUsernameForm(request.POST, user=request.user)
  37. if form.is_valid():
  38. request.user.set_username(form.cleaned_data['new_username'])
  39. request.user.save(update_fields=['username', 'username_slug'])
  40. message = _("Your username has been changed.")
  41. messages.success(request, message)
  42. return redirect('misago:usercp_change_username')
  43. return render(request, 'misago/usercp/change_username.html', {
  44. 'form': form,
  45. 'changes_left': namechanges.left,
  46. 'next_change_on': namechanges.next_on
  47. })
  48. @deny_guests
  49. def change_email_password(request):
  50. return render(request, 'misago/usercp/change_email_password.html')