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