diff --git a/funidata_utils/schemas/sisu/attainment.py b/funidata_utils/schemas/sisu/attainment.py index 4d1fa54..0e0b741 100644 --- a/funidata_utils/schemas/sisu/attainment.py +++ b/funidata_utils/schemas/sisu/attainment.py @@ -124,13 +124,6 @@ def date_as_isoformat(self, val: datetime.date, _info): return None return val.isoformat() - @field_validator('attainmentDate') - def attainment_date_valid(cls, val: datetime.date, _info): - if val > datetime.date.today(): - raise ValueError("Attainment date must not be in the future") - - return val - @model_validator(mode='after') def valid_primary_attainment(self): if self.documentState == 'DELETED' or not self.primary: @@ -183,6 +176,13 @@ class CourseUnitAttainment(Attainment): evaluationCriteria: LocalizedString | None = None assessmentItemAttainmentIds: list[str] | None = None + @field_validator('attainmentDate') + def attainment_date_valid(cls, val: datetime.date, _info): + if val > datetime.date.today(): + raise ValueError("Attainment date must not be in the future") + + return val + class CustomCourseUnitAttainment(Attainment): type: Literal['CustomCourseUnitAttainment'] = 'CustomCourseUnitAttainment' @@ -192,6 +192,13 @@ class CustomCourseUnitAttainment(Attainment): code: str customStudyDraftId: str | None = None + @field_validator('attainmentDate') + def attainment_date_valid(cls, val: datetime.date, _info): + if val > datetime.date.today(): + raise ValueError("Attainment date must not be in the future") + + return val + class CustomModuleAttainment(Attainment): type: Literal['CustomModuleAttainment'] = 'CustomModuleAttainment'