forms.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from django.core.validators import RegexValidator
  2. from django.utils.translation import ugettext_lazy as _
  3. from django import forms
  4. from misago.forms import Form, YesNoSwitch
  5. from misago.ranks.models import Rank
  6. class NewsletterForm(Form):
  7. name = forms.CharField(max_length=255)
  8. step_size = forms.IntegerField(initial=300,min_value=1)
  9. content_html = forms.CharField(widget=forms.Textarea)
  10. content_plain = forms.CharField(widget=forms.Textarea)
  11. ignore_subscriptions = forms.BooleanField(widget=YesNoSwitch,required=False)
  12. ranks = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Rank.objects.order_by('name').all(),required=False)
  13. layout = (
  14. (
  15. _("Newsletter Options"),
  16. (
  17. ('name', {'label': _("Newsletter Name"), 'help_text': _("Newsletter name will be used as message subject in e-mails sent to members.")}),
  18. ('step_size', {'label': _("Step Size"), 'help_text': _("Number of users that message will be sent to before forum refreshes page displaying sending progress.")}),
  19. ('ranks', {'label': _("Limit to roles"), '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.")}),
  20. ('ignore_subscriptions', {'label': _("Ignore members preferences"), '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.")}),
  21. )
  22. ),
  23. (
  24. _("Message"),
  25. (
  26. ('content_html', {'label': _("HTML Message"), 'help_text': _("HTML message visible to members who can read HTML e-mails."), 'attrs': {'rows': 10}}),
  27. ('content_plain', {'label': _("Plain Text Message"), 'help_text': _("Alternative plain text message that will be visible to members that can't or dont want to read HTML e-mails."), 'attrs': {'rows': 10}}),
  28. )
  29. ),
  30. )
  31. class SearchNewslettersForm(Form):
  32. name = forms.CharField(max_length=255, required=False)
  33. contains = forms.CharField(max_length=255, required=False)
  34. type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=(('0', _("Only to subscribers")), ('1', _("To every member"))), required=False)
  35. rank = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Rank.objects.order_by('order').all(), required=False)
  36. layout = (
  37. (
  38. _("Search Newsletters"),
  39. (
  40. ('name', {'label': _("Newsletter Name"), 'attrs': {'placeholder': _("Name contains...")}}),
  41. ('contains', {'label': _("Message Contents"), 'attrs': {'placeholder': _("Message contains...")}}),
  42. ('type', {'label': _("Newsletter Type")}),
  43. ('rank', {'label': _("Recipient Rank")}),
  44. ),
  45. ),
  46. )