@@ -179,13 +179,16 @@ async def approve_emergency_event(
179179 if not emergency_messaging_allowed (region , getattr (config , "emergency_contact" , None )):
180180 raise HTTPException (status_code = 403 , detail = "Emergency SMS/WhatsApp not allowed in this region" )
181181 db = getattr (request .app .state , "db" , None )
182- if db is None or not hasattr (db , "claim_emergency_event_pending" ) or not hasattr (db , "get_coordination_event_by_id" ) or not hasattr (db , "update_coordination_event" ):
182+ if db is None or not hasattr (db , "claim_emergency_event_pending" ) or not hasattr (db , "update_coordination_event" ):
183+ raise HTTPException (status_code = 503 , detail = "Database not available" )
184+ if not (hasattr (db , "get_coordination_event_by_id_raw" ) or hasattr (db , "get_coordination_event_by_id" )):
183185 raise HTTPException (status_code = 503 , detail = "Database not available" )
186+ get_event = getattr (db , "get_coordination_event_by_id_raw" , db .get_coordination_event_by_id )
184187 # Atomic claim: only one concurrent approval can transition pending -> approving
185188 claimed = await db .claim_emergency_event_pending (event_id )
186189 if claimed is None :
187190 raise HTTPException (status_code = 400 , detail = "Event already processed" )
188- event = await db . get_coordination_event_by_id (event_id )
191+ event = await get_event (event_id )
189192 if not event or event .get ("event_type" ) != "emergency" :
190193 await db .update_coordination_event (event_id , status = "pending" ) # roll back claim
191194 raise HTTPException (status_code = 400 , detail = "Not an emergency event" )
@@ -253,7 +256,13 @@ async def reject_emergency_event(
253256 raise HTTPException (status_code = 400 , detail = "Not an emergency event" )
254257 rejector = getattr (_user , "sub" , None ) or getattr (_user , "callsign" , "api" )
255258 now = datetime .now (timezone .utc ).isoformat ()
256- extra = event .get ("extra_data" ) or {}
257- extra .update ({"rejected_at" : now , "rejected_by" : str (rejector ), ** ({"notes" : body .notes } if body .notes else {})})
258- await db .update_coordination_event (event_id , status = "rejected" , extra_data = extra )
259+ await db .update_coordination_event (
260+ event_id ,
261+ status = "rejected" ,
262+ extra_data = {
263+ "rejected_at" : now ,
264+ "rejected_by" : str (rejector ),
265+ ** ({"notes" : body .notes } if body .notes else {}),
266+ },
267+ )
259268 return {"ok" : True , "event_id" : event_id , "status" : "rejected" }
0 commit comments