moderation.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from datetime import timedelta
  2. from django import forms
  3. from django.contrib.auth import get_user_model
  4. from django.utils import timezone
  5. from django.utils.translation import ugettext_lazy as _
  6. from django.utils.translation import ungettext
  7. from misago.conf import settings
  8. from misago.core.forms import YesNoSwitch
  9. from misago.users.bans import ban_user
  10. class ModerateAvatarForm(forms.ModelForm):
  11. is_avatar_locked = YesNoSwitch()
  12. avatar_lock_user_message = forms.CharField(required=False)
  13. avatar_lock_staff_message = forms.CharField(required=False)
  14. class Meta:
  15. model = get_user_model()
  16. fields = [
  17. 'is_avatar_locked',
  18. 'avatar_lock_user_message',
  19. 'avatar_lock_staff_message',
  20. ]
  21. class ModerateSignatureForm(forms.ModelForm):
  22. signature = forms.CharField(
  23. label=_("Signature contents"),
  24. widget=forms.Textarea(attrs={'rows': 3}),
  25. required=False)
  26. is_signature_locked = YesNoSwitch(
  27. label=_("Lock signature"),
  28. help_text=_("Setting this to yes will stop user from "
  29. "making changes to his/her signature."))
  30. signature_lock_user_message = forms.CharField(
  31. label=_("User message"),
  32. help_text=_("Optional message to user explaining "
  33. "why his/hers signature is locked."),
  34. widget=forms.Textarea(attrs={'rows': 3}),
  35. required=False)
  36. signature_lock_staff_message = forms.CharField(
  37. label=_("Staff message"),
  38. help_text=_("Optional message to team members explaining "
  39. "why user signature is locked."),
  40. widget=forms.Textarea(attrs={'rows': 3}),
  41. required=False)
  42. class Meta:
  43. model = get_user_model()
  44. fields = [
  45. 'signature',
  46. 'is_signature_locked',
  47. 'signature_lock_user_message',
  48. 'signature_lock_staff_message'
  49. ]
  50. def clean_signature(self):
  51. data = self.cleaned_data['signature']
  52. length_limit = settings.signature_length_max
  53. if len(data) > length_limit:
  54. raise forms.ValidationError(ungettext(
  55. "Signature can't be longer than %(limit)s character.",
  56. "Signature can't be longer than %(limit)s characters.",
  57. length_limit) % {'limit': length_limit})
  58. return data