Commit fb7e9f9d authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout retry import suivis quand markup moisi

parent be0505a4
...@@ -13,6 +13,10 @@ class SuiviInvalide(Exception): ...@@ -13,6 +13,10 @@ class SuiviInvalide(Exception):
pass pass
class MarkupInattendu(Exception):
pass
class LaPosteImporter(BaseImporter): class LaPosteImporter(BaseImporter):
URL = 'http://www.part.csuivi.courrier.laposte.fr/suivi/index?id={}' URL = 'http://www.part.csuivi.courrier.laposte.fr/suivi/index?id={}'
...@@ -45,17 +49,20 @@ class LaPosteImporter(BaseImporter): ...@@ -45,17 +49,20 @@ class LaPosteImporter(BaseImporter):
elif idtxt.startswith('L\'identifiant saisi'): elif idtxt.startswith('L\'identifiant saisi'):
raise SuiviInvalide() raise SuiviInvalide()
produit = self._next_el_sibling(ident) try:
date = self._next_el_sibling(produit) produit = self._next_el_sibling(ident)
localisation = self._next_el_sibling(date) date = self._next_el_sibling(produit)
statut = self._next_el_sibling(localisation) localisation = self._next_el_sibling(date)
statut = self._next_el_sibling(localisation)
except AttributeError:
raise MarkupInattendu()
if date and statut: if date and statut:
return '%s (%s)' % (statut.text, date.text) return '%s (%s)' % (statut.text, date.text)
else: else:
return None return None
def import_suivi(self, suivi): def import_suivi(self, suivi, tries=2):
if suivi not in self.cache: if suivi not in self.cache:
try: try:
statut = self._import_suivi(suivi) statut = self._import_suivi(suivi)
...@@ -63,6 +70,13 @@ class LaPosteImporter(BaseImporter): ...@@ -63,6 +70,13 @@ class LaPosteImporter(BaseImporter):
except SuiviInvalide: except SuiviInvalide:
self.error('INVALIDE %s' % suivi) self.error('INVALIDE %s' % suivi)
statut = 'Suivi invalide !' statut = 'Suivi invalide !'
except MarkupInattendu:
if tries > 0:
self.error('Markup invalide, essais restants = %s' % tries)
statut = self.import_suivi(suivi, tries - 1)
else:
self.error('Markup invalide')
statut = None
self.cache[suivi] = statut self.cache[suivi] = statut
return self.cache[suivi] return self.cache[suivi]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment