forms.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from django.core.validators import RegexValidator
  2. from django.utils.translation import ugettext_lazy as _
  3. import floppyforms as forms
  4. from misago.forms import Form, YesNoSwitch
  5. from misago.models import Rank
  6. from misago.validators import validate_sluggable
  7. class NewsletterForm(Form):
  8. name = forms.CharField(label=_("Newsletter Name"),
  9. help_text=_("Newsletter name will be used as message subject in e-mails sent to members."),
  10. max_length=255, validators=[validate_sluggable(
  11. _("Newsletter name must contain alphanumeric characters."),
  12. _("Newsletter name is too long.")
  13. )])
  14. step_size = forms.IntegerField(label=_("Step Size"),
  15. help_text=_("Number of users that message will be sent to before forum refreshes page displaying sending progress."),
  16. initial=300, min_value=1)
  17. content_html = forms.CharField(label=_("HTML Message"),
  18. help_text=_("HTML message visible to members who can read HTML e-mails."),
  19. widget=forms.Textarea)
  20. content_plain = forms.CharField(label=_("Plain Text Message"),
  21. help_text=_("Alternative plain text message that will be visible to members that can't or dont want to read HTML e-mails."),
  22. widget=forms.Textarea)
  23. ignore_subscriptions = forms.BooleanField(label=_("Ignore members preferences"),
  24. help_text=_("Change this option to yes if you want to send this newsletter to members that don't want to receive newsletters. This is good for emergencies."),
  25. widget=YesNoSwitch, required=False)
  26. ranks = forms.ModelMultipleChoiceField(label=_("Limit to roles"),
  27. help_text=_("You can limit this newsletter only to members who have specific ranks. If you dont set any ranks, this newsletter will be sent to every user."),
  28. widget=forms.CheckboxSelectMultiple, queryset=Rank.objects.order_by('name').all(), required=False)
  29. class SearchNewslettersForm(Form):
  30. name = forms.CharField(label=_("Newsletter Name"),
  31. max_length=255, required=False)
  32. contains = forms.CharField(label=_("Message Contents"),
  33. max_length=255, required=False)
  34. type = forms.TypedMultipleChoiceField(label=_("Newsletter Type"),
  35. widget=forms.CheckboxSelectMultiple, choices=((0, _("Only to subscribers")), (1, _("To every member"))), coerce=int, required=False)
  36. rank = forms.ModelMultipleChoiceField(label=_("Recipient Rank"), widget=forms.CheckboxSelectMultiple, queryset=Rank.objects.order_by('order').all(), required=False)