@@ -30,7 +30,8 @@ def parse_irrigation_operations(data: dict) -> Optional[List[IrrigationOperation
3030
3131
3232def create_pdf_from_operations (
33- operations : List [IrrigationOperation ], token : dict [str , str ] = None
33+ operations : List [IrrigationOperation ], token : dict [str , str ] = None ,
34+ data_used : bool = False ,
3435):
3536 """
3637 Create PDF report from irrigation operations
@@ -118,7 +119,8 @@ def create_pdf_from_operations(
118119 )
119120
120121 if len (operations ) > 1 :
121- operations .sort (key = lambda x : x .hasStartDatetime )
122+ if not data_used :
123+ operations .sort (key = lambda x : x .hasStartDatetime )
122124 pdf .set_fill_color (0 , 255 , 255 )
123125 with pdf .table (text_align = "CENTER" , padding = 0.5 ) as table :
124126 row = table .row ()
@@ -164,7 +166,11 @@ def create_pdf_from_operations(
164166 f"{ op .hasAppliedAmount .numericValue } ({ op .hasAppliedAmount .unit } )" ,
165167 )
166168
167- row .cell (op .usesIrrigationSystem )
169+ if isinstance (op .usesIrrigationSystem , dict ):
170+ local_sys = op .usesIrrigationSystem .get ("name" )
171+ else :
172+ local_sys = op .usesIrrigationSystem
173+ row .cell (local_sys )
168174 pdf .ln (10 )
169175
170176 return pdf
@@ -182,7 +188,7 @@ def process_irrigation_data(
182188 """
183189 Process irrigation data and generate PDF report
184190 """
185-
191+ data_used = False
186192 if irrigation_id :
187193 json_data = make_get_request (
188194 url = f'{ settings .REPORTING_FARMCALENDAR_BASE_URL } { settings .REPORTING_FARMCALENDAR_URLS ["irrigations" ]} { irrigation_id } /' ,
@@ -206,15 +212,18 @@ def process_irrigation_data(
206212 )
207213
208214 else :
209- json_data = json .load (data .file )
215+ data_used = True
216+ json_data = json .loads (data )
217+ if json_data :
218+ json_data = json_data ['@graph' ]
210219
211220 if json_data :
212221 operations = parse_irrigation_operations (json_data )
213222 else :
214223 operations = []
215224
216225 try :
217- pdf = create_pdf_from_operations (operations , token )
226+ pdf = create_pdf_from_operations (operations , token , data_used )
218227 except Exception :
219228 raise HTTPException (
220229 status_code = 400 , detail = "PDF generation of irrigation report failed."
0 commit comments