diff --git a/modules/automation/automation.py b/modules/automation/automation.py index 38250d1..e447504 100644 --- a/modules/automation/automation.py +++ b/modules/automation/automation.py @@ -1,4 +1,5 @@ from trytond.model import ModelSQL, ModelView, fields, Workflow +from trytond.pool import Pool, PoolMeta from trytond.pyson import Eval from trytond.wizard import Button import requests @@ -185,17 +186,28 @@ class AutomationDocument(ModelSQL, ModelView, Workflow): def run_pipeline(cls, docs): for doc in docs: try: - if cls.rule_set.ocr_required: - cls.run_ocr([doc]) - if cls.rule_set.structure_required and doc.state != "error": - cls.run_structure([doc]) - if cls.rule_set.table_required and doc.state != "error": - cls.run_tables([doc]) - if cls.rule_set.metadata_required and doc.state != "error": - cls.run_metadata([doc]) - if doc.state != "error": - doc.state = "validated" - doc.notes = (doc.notes or "") + "Pipeline completed\n" + metadata = cls.metadata_json + + if isinstance(metadata, str): + metadata = json.loads(metadata) + + if not isinstance(metadata, dict): + logger.info("NOT A JSON STRUCTURE:%s",metadata) + + WeightReport = Pool().get('weight.report') + WeightReport.create_from_json(metadata) + + # if cls.rule_set.ocr_required: + # cls.run_ocr([doc]) + # if cls.rule_set.structure_required and doc.state != "error": + # cls.run_structure([doc]) + # if cls.rule_set.table_required and doc.state != "error": + # cls.run_tables([doc]) + # if cls.rule_set.metadata_required and doc.state != "error": + # cls.run_metadata([doc]) + # if doc.state != "error": + # doc.state = "validated" + # doc.notes = (doc.notes or "") + "Pipeline completed\n" except Exception as e: doc.state = "error" doc.notes = (doc.notes or "") + f"Pipeline error: {e}\n" diff --git a/modules/document_incoming_wr/document.py b/modules/document_incoming_wr/document.py index 9e907f0..b559dcf 100644 --- a/modules/document_incoming_wr/document.py +++ b/modules/document_incoming_wr/document.py @@ -38,32 +38,6 @@ class Incoming(metaclass=PoolMeta): WR.run_ocr([wr]) WR.run_metadata([wr]) - metadata = wr.metadata_json - - # DEBUG: Vérifiez le type et contenu - print(f"Type de metadata: {type(metadata)}") - print(f"Contenu de metadata: {metadata}") - - # Si c'est une chaîne, parsez-la - if isinstance(metadata, str): - try: - metadata = json.loads(metadata) - except json.JSONDecodeError as e: - raise DocumentIncomingProcessError( - gettext('document_incoming.msg_invalid_json', - document=self.rec_name, - error=str(e))) - - # Maintenant metadata devrait être un dict - if not isinstance(metadata, dict): - raise DocumentIncomingProcessError( - gettext('document_incoming.msg_no_metadata', - document=self.rec_name)) - - # Créez le rapport - CORRECT, pas besoin de save() supplémentaire - WeightReport = Pool().get('weight.report') - WeightReport.create_from_json(metadata) - return wr # @property