forms.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. from django.utils.translation import ugettext_lazy as _
  2. from django import forms
  3. from mptt.forms import TreeNodeChoiceField
  4. from misago.forms import Form, YesNoSwitch
  5. from misago.forums.models import Forum
  6. class CategoryForm(Form):
  7. parent = False
  8. perms = False
  9. name = forms.CharField(max_length=255)
  10. description = forms.CharField(widget=forms.Textarea,required=False)
  11. closed = forms.BooleanField(widget=YesNoSwitch,required=False)
  12. style = forms.CharField(max_length=255,required=False)
  13. layout = (
  14. (
  15. _("Basic Options"),
  16. (
  17. ('parent', {'label': _("Category Parent")}),
  18. ('perms', {'label': _("Copy Permissions from")}),
  19. ('name', {'label': _("Category Name")}),
  20. ('description', {'label': _("Category Description")}),
  21. ('closed', {'label': _("Closed Category")}),
  22. ),
  23. ),
  24. (
  25. _("Display Options"),
  26. (
  27. ('style', {'label': _("Category Style"), 'help_text': _('You can add custom CSS classess to this category, to change way it looks on board index.')}),
  28. ),
  29. ),
  30. )
  31. def __init__(self, *args, **kwargs):
  32. self.base_fields['parent'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(include_self=True),level_indicator=u'- - ')
  33. self.base_fields['perms'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),level_indicator=u'- - ',required=False,empty_label=_("Don't copy permissions"))
  34. super(CategoryForm, self).__init__(*args, **kwargs)
  35. class ForumForm(Form):
  36. parent = False
  37. perms = False
  38. name = forms.CharField(max_length=255)
  39. description = forms.CharField(widget=forms.Textarea,required=False)
  40. closed = forms.BooleanField(widget=YesNoSwitch,required=False)
  41. style = forms.CharField(max_length=255,required=False)
  42. prune_start = forms.IntegerField(min_value=0,initial=0)
  43. prune_last = forms.IntegerField(min_value=0,initial=0)
  44. layout = (
  45. (
  46. _("Basic Options"),
  47. (
  48. ('parent', {'label': _("Forum Parent")}),
  49. ('perms', {'label': _("Copy Permissions from")}),
  50. ('name', {'label': _("Forum Name")}),
  51. ('description', {'label': _("Forum Description")}),
  52. ('closed', {'label': _("Closed Forum")}),
  53. ),
  54. ),
  55. (
  56. _("Prune Forum"),
  57. (
  58. ('prune_start', {'label': _("Delete threads with first post older than"), 'help_text': _('Enter number of days since topic start after which topic will be deleted or zero to don\'t delete topics.')}),
  59. ('prune_last', {'label': _("Delete threads with last post older than"), 'help_text': _('Enter number of days since since last reply in topic after which topic will be deleted or zero to don\'t delete topics.')}),
  60. ),
  61. ),
  62. (
  63. _("Display Options"),
  64. (
  65. ('style', {'label': _("Forum Style"), 'help_text': _('You can add custom CSS classess to this forum to change way it looks on forums lists.')}),
  66. ),
  67. ),
  68. )
  69. def __init__(self, *args, **kwargs):
  70. self.base_fields['parent'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),level_indicator=u'- - ')
  71. self.base_fields['perms'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),level_indicator=u'- - ',required=False,empty_label=_("Don't copy permissions"))
  72. super(ForumForm, self).__init__(*args, **kwargs)
  73. class RedirectForm(Form):
  74. parent = False
  75. perms = False
  76. name = forms.CharField(max_length=255)
  77. description = forms.CharField(widget=forms.Textarea,required=False)
  78. redirect = forms.URLField(max_length=255)
  79. style = forms.CharField(max_length=255,required=False)
  80. layout = (
  81. (
  82. _("Basic Options"),
  83. (
  84. ('parent', {'label': _("Redirect Parent")}),
  85. ('perms', {'label': _("Copy Permissions from")}),
  86. ('name', {'label': _("Redirect Name")}),
  87. ('redirect', {'label': _("Redirect URL")}),
  88. ('description', {'label': _("Redirect Description")}),
  89. ),
  90. ),
  91. (
  92. _("Display Options"),
  93. (
  94. ('style', {'label': _("Redirect Style"), 'help_text': _('You can add custom CSS classess to this redirect to change way it looks on forums lists.')}),
  95. ),
  96. ),
  97. )
  98. def __init__(self, *args, **kwargs):
  99. self.base_fields['parent'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),level_indicator=u'- - ')
  100. self.base_fields['perms'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),level_indicator=u'- - ',required=False,empty_label=_("Don't copy permissions"))
  101. super(RedirectForm, self).__init__(*args, **kwargs)
  102. class DeleteForm(Form):
  103. parent = False
  104. layout = (
  105. (
  106. _("Delete Options"),
  107. (
  108. ('parent', {'label': _("Move deleted Forum contents to")}),
  109. ),
  110. ),
  111. )
  112. def __init__(self, *args, **kwargs):
  113. self.base_fields['parent'] = TreeNodeChoiceField(queryset=Forum.tree.get(token='root').get_descendants(),required=False,empty_label=_("Remove with forum"),level_indicator=u'- - ')
  114. super(DeleteForm, self).__init__(*args, **kwargs)