@@ -101,6 +101,31 @@ async def check_if_session_is_active(
101101 return {"active" : response .status == 200 }
102102
103103
104+ @router .get ("/sessions/{session_id}/multigrid_controller/status" )
105+ async def check_multigrid_controller_exists (session_id : MurfeySessionID , db = murfey_db ):
106+ session = db .exec (select (Session ).where (Session .id == session_id )).one ()
107+ instrument_name = session .instrument_name
108+ machine_config = get_machine_config (instrument_name = instrument_name )[
109+ instrument_name
110+ ]
111+ if machine_config .instrument_server_url :
112+ log .debug (
113+ f"Submitting request to inspect multigrid controller for session { session_id } "
114+ )
115+ async with aiohttp .ClientSession () as clientsession :
116+ async with clientsession .get (
117+ f"{ machine_config .instrument_server_url } { url_path_for ('api.router' , 'check_multigrid_controller_exists' , session_id = session_id )} " ,
118+ headers = {
119+ "Authorization" : f"Bearer { instrument_server_tokens [session_id ]['access_token' ]} "
120+ },
121+ ) as resp :
122+ data : dict [str , Any ] = await resp .json ()
123+ else :
124+ data = {"detail" : "No instrument server URL found" }
125+ log .debug (f"Received response: { data } " )
126+ return data
127+
128+
104129@router .post ("/sessions/{session_id}/multigrid_watcher" )
105130async def setup_multigrid_watcher (
106131 session_id : MurfeySessionID , watcher_spec : MultigridWatcherSetup , db = murfey_db
@@ -165,28 +190,33 @@ async def start_multigrid_watcher(session_id: MurfeySessionID, db=murfey_db):
165190 return data
166191
167192
168- @router .get ("/sessions/{session_id}/multigrid_controller/status" )
169- async def check_multigrid_controller_exists (session_id : MurfeySessionID , db = murfey_db ):
170- session = db .exec (select (Session ).where (Session .id == session_id )).one ()
171- instrument_name = session .instrument_name
193+ @router .post ("/sessions/{session_id}/multigrid_controller/visit_end_time" )
194+ async def update_visit_end_time (
195+ session_id : MurfeySessionID , end_time : datetime .datetime , db = murfey_db
196+ ):
197+ # Load data for session
198+ session_entry = db .exec (select (Session ).where (Session .id == session_id )).one ()
199+ instrument_name = session_entry .instrument_name
200+
201+ # Update visit end time in database
202+ session_entry .visit_end_time = end_time
203+ db .add (session_entry )
204+ db .commit ()
205+
206+ # Update the multigrid controller
207+ data = {}
172208 machine_config = get_machine_config (instrument_name = instrument_name )[
173209 instrument_name
174210 ]
175211 if machine_config .instrument_server_url :
176- log .debug (
177- f"Submitting request to inspect multigrid controller for session { session_id } "
178- )
179212 async with aiohttp .ClientSession () as clientsession :
180- async with clientsession .get (
181- f"{ machine_config .instrument_server_url } { url_path_for ('api.router' , 'check_multigrid_controller_exists ' , session_id = session_id )} " ,
213+ async with clientsession .post (
214+ f"{ machine_config .instrument_server_url } { url_path_for ('api.router' , 'update_multigrid_controller_visit_end_time ' , session_id = session_id ) } ?end_time= { quote ( end_time . isoformat () )} " ,
182215 headers = {
183216 "Authorization" : f"Bearer { instrument_server_tokens [session_id ]['access_token' ]} "
184217 },
185218 ) as resp :
186- data : dict [str , Any ] = await resp .json ()
187- else :
188- data = {"detail" : "No instrument server URL found" }
189- log .debug (f"Received response: { data } " )
219+ data = await resp .json ()
190220 return data
191221
192222
@@ -422,36 +452,6 @@ async def finalise_session(session_id: MurfeySessionID, db=murfey_db):
422452 return data
423453
424454
425- @router .post ("/sessions/{session_id}/multigrid_controller/visit_end_time" )
426- async def update_visit_end_time (
427- session_id : MurfeySessionID , end_time : datetime .datetime , db = murfey_db
428- ):
429- # Load data for session
430- session_entry = db .exec (select (Session ).where (Session .id == session_id )).one ()
431- instrument_name = session_entry .instrument_name
432-
433- # Update visit end time in database
434- session_entry .visit_end_time = end_time
435- db .add (session_entry )
436- db .commit ()
437-
438- # Update the multigrid controller
439- data = {}
440- machine_config = get_machine_config (instrument_name = instrument_name )[
441- instrument_name
442- ]
443- if machine_config .instrument_server_url :
444- async with aiohttp .ClientSession () as clientsession :
445- async with clientsession .post (
446- f"{ machine_config .instrument_server_url } { url_path_for ('api.router' , 'update_multigrid_controller_visit_end_time' , session_id = session_id )} ?end_time={ quote (end_time .isoformat ())} " ,
447- headers = {
448- "Authorization" : f"Bearer { instrument_server_tokens [session_id ]['access_token' ]} "
449- },
450- ) as resp :
451- data = await resp .json ()
452- return data
453-
454-
455455@router .post ("/sessions/{session_id}/abandon_session" )
456456async def abandon_session (session_id : MurfeySessionID , db = murfey_db ):
457457 data = {}
0 commit comments