From 4f55dbbb43465b03072b340ca2037f45b66722c2 Mon Sep 17 00:00:00 2001 From: Wilfried BARADAT Date: Tue, 28 May 2024 17:25:47 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8A(xi)=20add=20possibility=20to=20ign?= =?UTF-8?q?ore=20error=20when=20indexing=20courses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Validation errors that happens on course indexing were not ignored by the `ignore_errors` flag. Fixing it. --- src/api/core/warren/xi/indexers/moodle/etl.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/core/warren/xi/indexers/moodle/etl.py b/src/api/core/warren/xi/indexers/moodle/etl.py index c4a7c31f..00c93f8c 100644 --- a/src/api/core/warren/xi/indexers/moodle/etl.py +++ b/src/api/core/warren/xi/indexers/moodle/etl.py @@ -49,7 +49,14 @@ async def _extract(self) -> List[Course]: def _transform(self, raw: List[Course]) -> Iterator[ExperienceCreate]: """Transform courses into experiences.""" - return (course.to_experience(base_url=self._lms.url) for course in raw) + for course in raw: + try: + yield course.to_experience(base_url=self._lms.url) + except ValidationError as err: + if not self._ignore_errors: + raise err + logger.exception("Skipping invalid course %s", course.id) + pass async def _load(self, data: Iterator[ExperienceCreate]) -> None: """Load experiences into the Experience Index (XI).""" @@ -121,6 +128,7 @@ def _transform(self, raw: List[Section]) -> Iterator[ExperienceCreate]: if not self._ignore_errors: raise err logger.exception("Skipping invalid module %s", module.id) + pass async def _load(self, data: Iterator[ExperienceCreate]) -> None: """Load experiences into the Experience Index (XI) and create relations."""