| 402 | |
| 403 | |
| 404 | class ProjectBuildAndDeployForm(StarletteForm): |
| 405 | preset = SelectField( |
| 406 | _l("Framework presets"), |
| 407 | validators=[Optional(), Length(max=255)], |
| 408 | ) |
| 409 | runner = SelectField( |
| 410 | _l("Runner"), |
| 411 | validators=[DataRequired(), Length(min=1, max=255)], |
| 412 | ) |
| 413 | root_directory = StringField( |
| 414 | _l("Root directory"), |
| 415 | validators=[ |
| 416 | Length(max=255, message=_l("Root directory cannot exceed 255 characters")), |
| 417 | Regexp( |
| 418 | r"^[a-zA-Z0-9_\-./]*$", |
| 419 | message=_l( |
| 420 | "Root directory can only contain letters, numbers, dots, hyphens, underscores, and forward slashes" |
| 421 | ), |
| 422 | ), |
| 423 | ], |
| 424 | ) |
| 425 | build_command = StringField(_l("Build command")) |
| 426 | pre_deploy_command = StringField(_l("Pre-deploy command")) |
| 427 | start_command = StringField( |
| 428 | _l("Start command"), validators=[DataRequired(), Length(min=1)] |
| 429 | ) |
| 430 | |
| 431 | def __init__(self, *args, **kwargs): |
| 432 | super().__init__(*args, **kwargs) |
| 433 | settings = get_settings() |
| 434 | registry_state = RegistryService(Path(settings.data_dir) / "registry").state |
| 435 | self._runners = registry_state.runners |
| 436 | self._presets = registry_state.presets |
| 437 | self.preset.choices = [("", _l("None"))] + [ |
| 438 | (preset["slug"], preset["name"]) |
| 439 | for preset in self._presets |
| 440 | if preset.get("enabled") is True |
| 441 | ] |
| 442 | self.runner.choices = _runner_choices(self._runners) |
| 443 | |
| 444 | validate_runner = validate_runner |
| 445 | |
| 446 | validate_root_directory = validate_root_directory |
| 447 | |
| 448 | |
| 449 | class ProjectGeneralForm(StarletteForm): |
nothing calls this directly
no outgoing calls
no test coverage detected