rename.py 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. from django.utils.translation import ugettext_lazy as _
  2. from misago.core import forms
  3. from ..validators import validate_username
  4. class ChangeUsernameForm(forms.Form):
  5. username = forms.CharField(max_length=200, required=False)
  6. def __init__(self, *args, **kwargs):
  7. self.user = kwargs.pop('user', None)
  8. super(ChangeUsernameForm, self).__init__(*args, **kwargs)
  9. def clean(self):
  10. data = super(ChangeUsernameForm, self).clean()
  11. username = data.get('username')
  12. if not username:
  13. raise forms.ValidationError(_("Enter new username."))
  14. if username == self.user.username:
  15. message = _("New username is same as current one.")
  16. raise forms.ValidationError(message)
  17. validate_username(username, exclude=self.user)
  18. return data
  19. def change_username(self, changed_by):
  20. self.user.set_username(
  21. self.cleaned_data['username'], changed_by=changed_by)
  22. self.user.save(update_fields=['username', 'slug'])