moderation.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from django.utils.translation import ugettext_lazy as _
  2. from misago.core import forms
  3. from misago.forums.forms import ForumChoiceField
  4. class MoveThreadsBaseForm(forms.Form):
  5. def __init__(self, *args, **kwargs):
  6. self.forum = kwargs.pop('forum')
  7. super(MoveThreadsBaseForm, self).__init__(*args, **kwargs)
  8. def clean(self):
  9. data = super(MoveThreadsBaseForm, self).clean()
  10. new_forum = data.get('new_forum')
  11. if new_forum:
  12. if new_forum.is_category:
  13. message = _("You can't move threads to category.")
  14. raise forms.ValidationError(message)
  15. if new_forum.is_redirect:
  16. message = _("You can't move threads to redirect.")
  17. raise forms.ValidationError(message)
  18. if new_forum.pk == self.forum.pk:
  19. message = _("New forum is same as current one.")
  20. raise forms.ValidationError(message)
  21. else:
  22. raise forms.ValidationError(_("You have to select forum."))
  23. return data
  24. def MoveThreadsForm(*args, **kwargs):
  25. user = kwargs.pop('user')
  26. label = kwargs.pop('label', _("Move threads to forum"))
  27. forum_field = ForumChoiceField(label=label, acl=user.acl, empty_label=None)
  28. FormType = type("FinalMoveThreadsForm", (MoveThreadsBaseForm,), {
  29. 'new_forum': forum_field,
  30. })
  31. return FormType(*args, **kwargs)