forms.py 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. from django import forms
  2. from django.core.exceptions import ValidationError
  3. from django.utils.translation import ugettext_lazy as _
  4. from misago.forms import Form
  5. from misago.validators import validate_username
  6. class UsernameChangeForm(Form):
  7. username = forms.CharField(max_length=255)
  8. error_source = 'username'
  9. layout = [
  10. [
  11. None,
  12. [
  13. ('username', {'label': _("Change Username to"), 'help_text': _("Enter new desired username.")}),
  14. ],
  15. ],
  16. ]
  17. def clean_username(self):
  18. org_username = self.request.user.username
  19. if org_username == self.cleaned_data['username']:
  20. raise ValidationError(_("Your new username is same as current one."))
  21. validate_username(self.cleaned_data['username'])
  22. self.request.user.set_username(self.cleaned_data['username'])
  23. try:
  24. self.request.user.full_clean()
  25. except ValidationError as e:
  26. self.request.user.is_username_valid(e)
  27. self.request.user.set_username(org_username)
  28. return self.cleaned_data['username']