1+ from celery import shared_task
12from config import celery_app
23from reference .marker import mark_references
34from reference .models import Reference , ElementCitation , ReferenceStatus
@@ -22,7 +23,13 @@ def get_number_of_month(texto):
2223 return None # Si no encuentra un mes
2324
2425def get_xml (json_reference ):
25- json_reference = json .loads (json_reference )
26+ try :
27+ json_reference = json .loads (json_reference )
28+ except json .JSONDecodeError as e :
29+ print (f"JSON malformado da IA: { e } " )
30+ print (f"JSON recebido: { json_reference [:500 ]} ..." )
31+ # Retornar estrutura básica
32+ return etree .Element ("error" )
2633 root = etree .Element ('element-citation' ,
2734 attrib = {
2835 'publication-type' : json_reference ['reftype' ],
@@ -105,16 +112,17 @@ def get_xml(json_reference):
105112 return root
106113
107114
108- #@celery_app.task()
115+ @ shared_task
109116def get_reference (obj_id ):
110117 obj_reference = Reference .objects .get (id = obj_id )
111- marked = mark_references (obj_reference .mixed_citation )
118+ marked = list (mark_references (obj_reference .mixed_citation ))
119+
112120 for item in marked :
113121 for i in item ['choices' ]:
114122 ElementCitation .objects .create (
115123 reference = obj_reference ,
116124 marked = i ,
117125 marked_xml = etree .tostring (get_xml (i ), pretty_print = True , encoding = 'unicode' )
118126 )
119- obj_reference .estatus = ReferenceStatus .READY
127+ obj_reference .status = ReferenceStatus .READY
120128 obj_reference .save ()
0 commit comments