diff --git a/joj3_config_generator/models/task.py b/joj3_config_generator/models/task.py index 24ee270..6fca240 100644 --- a/joj3_config_generator/models/task.py +++ b/joj3_config_generator/models/task.py @@ -79,6 +79,24 @@ class ParserKeyword(BaseModel): weight: List[int] = [] +class ParserDiffOutputs(BaseModel): + score: int = 0 + ignore_spaces: bool = Field( + True, validation_alias=AliasChoices("ignore-spaces", "ignore_spaces") + ) + hide: bool = False + force_quit: bool = Field( + False, validation_alias=AliasChoices("force-quit", "force_quit") + ) + max_length: int = Field( + 2048, validation_alias=AliasChoices("max-length", "max_length") + ) + max_lines: int = Field(50, validation_alias=AliasChoices("max-lines", "max_lines")) + hide_common_prefix: bool = Field( + False, validation_alias=AliasChoices("hide-common-prefix", "hide_common_prefix") + ) + + class ParserDiff(BaseModel): score: int = DEFAULT_CASE_SCORE ignore_spaces: bool = Field( @@ -95,6 +113,23 @@ class ParserDiff(BaseModel): hide_common_prefix: bool = Field( False, validation_alias=AliasChoices("hide-common-prefix", "hide_common_prefix") ) + # remove below codes when migration is complete + output: ParserDiffOutputs = ParserDiffOutputs() + default_score: int = Field( + DEFAULT_CASE_SCORE, + validation_alias=AliasChoices("default-score", "default_score"), + ) + + @model_validator(mode="after") + def copy_output_fields(self) -> "ParserDiff": + if "default_score" in self.model_fields_set: + self.score = self.default_score + if not isinstance(self.output, ParserDiffOutputs): + return self + for field_name, field_value in self.output.model_dump().items(): + if field_name in self.output.model_fields_set and hasattr(self, field_name): + setattr(self, field_name, field_value) + return self class StageFiles(BaseModel):