48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from wtforms.fields import (
|
|
SelectMultipleField,
|
|
StringField,
|
|
TextAreaField,
|
|
)
|
|
from wtforms.validators import Length, InputRequired
|
|
from atat.forms.validators import Name
|
|
from wtforms.widgets import ListWidget, CheckboxInput
|
|
|
|
from .forms import BaseForm
|
|
from atat.utils.localization import translate
|
|
|
|
from .data import SERVICE_BRANCHES
|
|
|
|
|
|
class PortfolioForm(BaseForm):
|
|
name = StringField(
|
|
translate("forms.portfolio.name.label"),
|
|
validators=[
|
|
Length(
|
|
min=4,
|
|
max=100,
|
|
message=translate("forms.portfolio.name.length_validation_message"),
|
|
),
|
|
Name(),
|
|
],
|
|
)
|
|
description = TextAreaField(
|
|
translate("forms.portfolio.description.label"), validators=[Length(max=1_000)]
|
|
)
|
|
|
|
|
|
class PortfolioCreationForm(PortfolioForm):
|
|
defense_component = SelectMultipleField(
|
|
translate("forms.portfolio.defense_component.title"),
|
|
description=translate("forms.portfolio.defense_component.help_text"),
|
|
choices=SERVICE_BRANCHES,
|
|
widget=ListWidget(prefix_label=False),
|
|
option_widget=CheckboxInput(),
|
|
validators=[
|
|
InputRequired(
|
|
message=translate(
|
|
"forms.portfolio.defense_component.validation_message"
|
|
)
|
|
)
|
|
],
|
|
)
|