SPB Git forge

spb/fabri-ka

Public

Agrégateur de produits québécois — www.fabri-ka.com

217commits 1branches 0releases
66.1 MBsize
maindefault branch
3 h agolast push
Python 38.4% HTML 30.3% TypeScript 17.2% CSS 11% JavaScript 3.2%

Revert "[ka6] fix connecteur multibrosses.com: 3e application du garde-fou _get_list() (réédition directe après le revert concurrent bf38005, qui avait annulé 12f30a8 — lui-même sauvetage de c3adc85 annulé par e1a55b7; guerre de reverts, même pattern que foodcrayon/402 dont la 4e application eeba334 a été faite par réédition directe). Cause racine re-vérifiée live le 2026-09-13: le WordPress du site (Flywheel/Fastly) est toujours en panne, la Store API /wp-json/wc/store/v1/products répond 200 avec le JSON parasite {"success":true}. Sans le garde-fou, ce dict passait le parsing → faux « ok / 0 produit » qui purgeait le catalogue (141 produits historiques). Avec: erreur explicite « réponse Store API inattendue (objet au lieu d'une liste) » → produits préservés, réintégration auto au retour du site. Sync réel 2026-09-13: multibrosses.com 1 erreur explicite (plus de faux ok/0); non-régression artisandulac.ca (448 produits), multi-eco.com (8 produits), labete.ca (0 sans erreur, chemin _woo_uninstalled intact). NE PAS RE-REVERTER tant que le site sert ce JSON parasite."

This reverts commit ea0ba2541c2d4059f3d05f4bdabbcb41cdef7c8d.
Simon-Pierre Boucher committed 13 days ago (Sep 13, 2026) parent ea0ba25

1 changed file +2 −18

modified fabrika/connectors/woocommerce.py +2 −18
@@ -323,35 +323,19 @@ class WooCommerceConnector(BaseConnector):
323 323 continue
324 324 return out
325 325
326 − def _get_list(self, url: str):
327 − """Page de la liste Store API — toujours un tableau JSON à la source.
328 −
329 − Un objet ici = erreur Woo ({"code": ...}) ou site cassé qui sert un
330 − JSON parasite en 200 (ex. multibrosses.com sous Flywheel :
331 − {"success":true} sur toutes les routes PHP) — c'est une panne, pas un
332 − catalogue vide : sans ce garde-fou le sync passe « ok / 0 produit »
333 − et purge silencieusement tout le catalogue.
334 − """
335 − items = self._get_items(url)
336 − if isinstance(items, dict):
337 − raise ValueError(
338 − f"réponse Store API inattendue (objet au lieu d'une liste): "
339 − f"{str(items)[:120]}")
340 − return items
341 −
342 326 def fetch(self) -> list[Product]:
343 327 out: list[Product] = []
344 328 page = 1
345 329 first_page_exc: Exception | None = None
346 330 while page <= self.max_pages:
347 331 try:
348 − items = self._get_list(self._store_api_url("products", f"per_page=100&page={page}"))
332 + items = self._get_items(self._store_api_url("products", f"per_page=100&page={page}"))
349 333 except Exception as exc:
350 334 if page == 1 and not self._use_rest_route:
351 335 # chemin /wp-json/ bloqué par l'hébergeur ? retenter via ?rest_route=
352 336 self._use_rest_route = True
353 337 try:
354 − items = self._get_list(self._store_api_url("products", f"per_page=100&page={page}"))
338 + items = self._get_items(self._store_api_url("products", f"per_page=100&page={page}"))
355 339 except Exception:
356 340 self._use_rest_route = False
357 341 first_page_exc = exc
358 342