20.01.26
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from trytond.model import ModelSQL, ModelView, fields, Workflow
|
from trytond.model import ModelSQL, ModelView, fields, Workflow
|
||||||
|
from trytond.pool import Pool, PoolMeta
|
||||||
from trytond.pyson import Eval
|
from trytond.pyson import Eval
|
||||||
from trytond.wizard import Button
|
from trytond.wizard import Button
|
||||||
import requests
|
import requests
|
||||||
@@ -185,17 +186,28 @@ class AutomationDocument(ModelSQL, ModelView, Workflow):
|
|||||||
def run_pipeline(cls, docs):
|
def run_pipeline(cls, docs):
|
||||||
for doc in docs:
|
for doc in docs:
|
||||||
try:
|
try:
|
||||||
if cls.rule_set.ocr_required:
|
metadata = cls.metadata_json
|
||||||
cls.run_ocr([doc])
|
|
||||||
if cls.rule_set.structure_required and doc.state != "error":
|
if isinstance(metadata, str):
|
||||||
cls.run_structure([doc])
|
metadata = json.loads(metadata)
|
||||||
if cls.rule_set.table_required and doc.state != "error":
|
|
||||||
cls.run_tables([doc])
|
if not isinstance(metadata, dict):
|
||||||
if cls.rule_set.metadata_required and doc.state != "error":
|
logger.info("NOT A JSON STRUCTURE:%s",metadata)
|
||||||
cls.run_metadata([doc])
|
|
||||||
if doc.state != "error":
|
WeightReport = Pool().get('weight.report')
|
||||||
doc.state = "validated"
|
WeightReport.create_from_json(metadata)
|
||||||
doc.notes = (doc.notes or "") + "Pipeline completed\n"
|
|
||||||
|
# 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:
|
except Exception as e:
|
||||||
doc.state = "error"
|
doc.state = "error"
|
||||||
doc.notes = (doc.notes or "") + f"Pipeline error: {e}\n"
|
doc.notes = (doc.notes or "") + f"Pipeline error: {e}\n"
|
||||||
|
|||||||
@@ -38,32 +38,6 @@ class Incoming(metaclass=PoolMeta):
|
|||||||
WR.run_ocr([wr])
|
WR.run_ocr([wr])
|
||||||
WR.run_metadata([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
|
return wr
|
||||||
|
|
||||||
# @property
|
# @property
|
||||||
|
|||||||
Reference in New Issue
Block a user