Skip to content
Extraits de code Groupes Projets
Valider 5f62fe20 rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

Attrap: compare des objets datetime avisés

parent 7d0cb92a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -55,7 +55,7 @@ class Attrap:
if not url == "":
self.url = url
if date is not None:
self.date = date
self.date = Attrap.get_aware_datetime(date)
self.date_str = date.strftime("%d/%m/%Y")
if not name == "":
self.name = name
......@@ -75,15 +75,15 @@ class Attrap:
if pdf_metadata:
if pdf_metadata.creation_date:
self.pdf_creation_date = pdf_metadata.creation_date
self.pdf_creation_date = Attrap.get_aware_datetime(pdf_metadata.creation_date)
if self.date is None:
self.date = pdf_metadata.creation_date
self.date = Attrap.get_aware_datetime(pdf_metadata.creation_date)
self.date_str = self.date.strftime("%d/%m/%Y")
if pdf_metadata.modification_date:
self.pdf_modification_date = pdf_metadata.modification_date
self.pdf_modification_date = Attrap.get_aware_datetime(pdf_metadata.modification_date)
if self.date is None:
self.date = pdf_metadata.modification_date
self.date = Attrap.get_aware_datetime(pdf_metadata.modification_date)
self.date_str = self.date.strftime("%d/%m/%Y")
def extract_content(self, data_dir):
......@@ -118,15 +118,15 @@ class Attrap:
pdf_modification_date_json = None
if self.pdf_creation_date:
pdf_creation_date_json = self.pdf_creation_date.strftime("%d/%m/%Y %H:%M:%S")
pdf_creation_date_json = self.pdf_creation_date.strftime("%d/%m/%Y %H:%M:%S%z")
if self.pdf_modification_date:
pdf_modification_date_json = self.pdf_modification_date.strftime("%d/%m/%Y %H:%M:%S")
pdf_modification_date_json = self.pdf_modification_date.strftime("%d/%m/%Y %H:%M:%S%z")
properties = {
'name': self.name,
'date': self.date_str,
'url': quote(self.url, safe='/:'),
'first_saw_on': datetime.datetime.today().strftime("%d/%m/%Y %H:%M:%S"),
'first_saw_on': datetime.datetime.now(datetime.timezone.utc).strftime("%d/%m/%Y %H:%M:%S%z"),
'pdf_creation_date': pdf_creation_date_json,
'pdf_modification_date': pdf_modification_date_json
}
......@@ -583,13 +583,13 @@ class Attrap:
for raa in elements:
# Si le fichier n'a pas déjà été parsé et qu'il est postérieur à la
# date maximale d'analyse, on le télécharge et on le parse
if not os.path.isfile(f'{self.data_dir}/raa/{raa.get_sha256()}.txt') and (not raa.date or (raa.date >= self.not_before)):
if not os.path.isfile(f'{self.data_dir}/raa/{raa.get_sha256()}.txt') and (not raa.date or (raa.date >= Attrap.get_aware_datetime(self.not_before))):
url = quote(raa.url, safe='/:')
self.download_file(raa)
raa.parse_metadata(self.data_dir)
# Lorsque la date du RAA n'est pas connue, on a dû télécharger le PDF pour récupérer la date de ses métadonnées.
# Donc on vérifie à nouveau ici si la date correspond à ce qu'on veut analyser
if (raa.date and raa.date >= self.not_before):
if (raa.date and raa.date >= Attrap.get_aware_datetime(self.not_before)):
logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}')
self.flatten_pdf(raa)
self.ocr(raa, True)
......@@ -694,3 +694,15 @@ class Attrap:
except Exception as exc:
logger.warning(f'Impossible de deviner la date du terme {string} : {exc}')
return datetime.datetime(9999, 1, 1)
def get_aware_datetime(unknown_datetime):
"""
Retourne un objet datetime avisé.
datetime - L'objet datetime à aviser. Utilise le fuseau horaire du système si datetime est naïf.
"""
if unknown_datetime.tzinfo is not None and unknown_datetime.tzinfo.utcoffset(unknown_datetime) is not None:
return unknown_datetime
else:
return unknown_datetime.replace(tzinfo=datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo)
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter