rename.py 1.1 KB

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