stream_form_blocks.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. from django.utils.translation import ugettext_lazy as _
  2. from wagtail.core import blocks
  3. from coderedcms.wagtail_flexible_forms import blocks as form_blocks
  4. from coderedcms.blocks.base_blocks import BaseBlock, CoderedAdvSettings
  5. from coderedcms.forms import (
  6. CoderedDateField, CoderedDateInput,
  7. CoderedDateTimeField, CoderedDateTimeInput,
  8. CoderedTimeField, CoderedTimeInput,
  9. SecureFileField
  10. )
  11. class CoderedFormAdvSettings(CoderedAdvSettings):
  12. condition_trigger_id = blocks.CharBlock(
  13. required=False,
  14. max_length=255,
  15. label=_('Condition Trigger ID'),
  16. help_text=_('The "Custom ID" of another field that that will trigger this field to be shown/hidden.')
  17. )
  18. condition_trigger_value = blocks.CharBlock(
  19. required=False,
  20. max_length=255,
  21. label=_('Condition Trigger Value'),
  22. help_text=_('The value of the field in "Condition Trigger ID" that will trigger this field to be shown.')
  23. )
  24. class FormBlockMixin(BaseBlock):
  25. class Meta:
  26. abstract=True
  27. advsettings_class = CoderedFormAdvSettings
  28. class CoderedStreamFormFieldBlock(form_blocks.OptionalFormFieldBlock, FormBlockMixin):
  29. pass
  30. class CoderedStreamFormCharFieldBlock(form_blocks.CharFieldBlock, FormBlockMixin):
  31. class Meta:
  32. label = _("Text or Email input")
  33. icon = "fa-window-minimize"
  34. class CoderedStreamFormTextFieldBlock(form_blocks.TextFieldBlock, FormBlockMixin):
  35. class Meta:
  36. label = _("Multi-line text")
  37. icon = "fa-align-left"
  38. class CoderedStreamFormNumberFieldBlock(form_blocks.NumberFieldBlock, FormBlockMixin):
  39. class Meta:
  40. label = _("Numbers only")
  41. icon = "fa-hashtag"
  42. class CoderedStreamFormCheckboxFieldBlock(form_blocks.CheckboxFieldBlock, FormBlockMixin):
  43. class Meta:
  44. label = _("Single Checkbox")
  45. icon = "fa-check-square-o"
  46. class CoderedStreamFormRadioButtonsFieldBlock(form_blocks.RadioButtonsFieldBlock, FormBlockMixin):
  47. class Meta:
  48. label = _("Radios")
  49. icon = "fa-list-ul"
  50. class CoderedStreamFormDropdownFieldBlock(form_blocks.DropdownFieldBlock, FormBlockMixin):
  51. class Meta:
  52. label = _("Dropdown")
  53. icon = "fa-list-alt"
  54. class CoderedStreamFormCheckboxesFieldBlock(form_blocks.CheckboxesFieldBlock, FormBlockMixin):
  55. class Meta:
  56. label = _("Checkboxes")
  57. icon = "fa-list-ul"
  58. class CoderedStreamFormDateFieldBlock(form_blocks.DateFieldBlock, FormBlockMixin):
  59. class Meta:
  60. label = _("Date")
  61. icon = "fa-calendar"
  62. field_class = CoderedDateField
  63. widget = CoderedDateInput
  64. class CoderedStreamFormTimeFieldBlock(form_blocks.TimeFieldBlock, FormBlockMixin):
  65. class Meta:
  66. label = _("Time")
  67. icon = "fa-clock-o"
  68. field_class = CoderedTimeField
  69. widget = CoderedTimeInput
  70. class CoderedStreamFormDateTimeFieldBlock(form_blocks.DateTimeFieldBlock, FormBlockMixin):
  71. class Meta:
  72. label = _("Date and Time")
  73. icon = "fa-calendar"
  74. field_class = CoderedDateTimeField
  75. widget = CoderedDateTimeInput
  76. class CoderedStreamFormImageFieldBlock(form_blocks.ImageFieldBlock, FormBlockMixin):
  77. class Meta:
  78. label = _("Image Upload")
  79. icon = "fa-picture-o"
  80. class CoderedStreamFormFileFieldBlock(form_blocks.FileFieldBlock, FormBlockMixin):
  81. class Meta:
  82. label = _("Secure File Upload")
  83. icon = "fa-upload"
  84. field_class = SecureFileField
  85. class CoderedStreamFormStepBlock(form_blocks.FormStepBlock):
  86. form_fields = blocks.StreamBlock()
  87. def __init__(self, local_blocks=None, **kwargs):
  88. super().__init__(
  89. local_blocks = [
  90. ('form_fields', blocks.StreamBlock(local_blocks))
  91. ]
  92. )