stream_form_blocks.py 3.9 KB

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