From 05e42d0adc1a215df7c82d8009a28181b48be1cd Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Tue, 25 Mar 2025 14:40:35 +0000 Subject: [PATCH 1/3] Add post endpoint for setting session processing parameters --- .../server/api/processing_parameters.py | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/murfey/server/api/processing_parameters.py b/src/murfey/server/api/processing_parameters.py index dc81b56d9..d3a7ec184 100644 --- a/src/murfey/server/api/processing_parameters.py +++ b/src/murfey/server/api/processing_parameters.py @@ -1,27 +1,29 @@ from logging import getLogger +from typing import Optional -from fastapi import APIRouter +from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlmodel import Session, select +from murfey.server.api.auth import MurfeySessionID, validate_token from murfey.server.murfey_db import murfey_db from murfey.util.db import SessionProcessingParameters logger = getLogger("murfey.server.api.processing_parameters") -router = APIRouter() +router = APIRouter(dependencies=[Depends(validate_token)]) class EditableSessionProcessingParameters(BaseModel): - gain_ref: str - dose_per_frame: float - eer_fractionation_file: str - symmetry: str + gain_ref: str = "" + dose_per_frame: Optional[float] = None + eer_fractionation_file: str = "" + symmetry: str = "" @router.get("sessions/{session_id}/session_processing_parameters") def get_session_processing_parameters( - session_id: int, db: Session = murfey_db + session_id: MurfeySessionID, db: Session = murfey_db ) -> EditableSessionProcessingParameters: proc_params = db.exec( select(SessionProcessingParameters).where( @@ -34,3 +36,28 @@ def get_session_processing_parameters( eer_fractionation_file=proc_params.eer_fractionation_file, symmetry=proc_params.symmetry, ) + + +@router.post("sessions/{session_id}/session_processing_parameters") +def set_session_processing_parameters( + session_id: MurfeySessionID, + edited_parameters: EditableSessionProcessingParameters, + db: Session = murfey_db, +) -> EditableSessionProcessingParameters: + proc_params = db.exec( + select(SessionProcessingParameters).where( + SessionProcessingParameters.session_id == session_id + ) + ).one() + proc_params.gain_ref = edited_parameters.gain_ref or proc_params.gain_ref + proc_params.dose_per_frame = ( + edited_parameters.dose_per_frame or proc_params.dose_per_frame + ) + proc_params.eer_fractionation_file = ( + edited_parameters.eer_fractioantion_file or proc_params.eer_fractionation_file + ) + proc_params.symmetry = edited_parameters.symmetry or proc_params.symmetry + db.add(proc_params) + db.commit() + db.exit() + return edited_parameters From 2bf70df4778a7b0fa4e5306e94da81198f290e9d Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Tue, 25 Mar 2025 15:22:04 +0000 Subject: [PATCH 2/3] Missed slashes --- src/murfey/server/api/processing_parameters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/murfey/server/api/processing_parameters.py b/src/murfey/server/api/processing_parameters.py index d3a7ec184..c1449f33f 100644 --- a/src/murfey/server/api/processing_parameters.py +++ b/src/murfey/server/api/processing_parameters.py @@ -21,7 +21,7 @@ class EditableSessionProcessingParameters(BaseModel): symmetry: str = "" -@router.get("sessions/{session_id}/session_processing_parameters") +@router.get("/sessions/{session_id}/session_processing_parameters") def get_session_processing_parameters( session_id: MurfeySessionID, db: Session = murfey_db ) -> EditableSessionProcessingParameters: @@ -38,7 +38,7 @@ def get_session_processing_parameters( ) -@router.post("sessions/{session_id}/session_processing_parameters") +@router.post("/sessions/{session_id}/session_processing_parameters") def set_session_processing_parameters( session_id: MurfeySessionID, edited_parameters: EditableSessionProcessingParameters, From 170344db4eb882ac36b475fb49279081b9b63c25 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Tue, 25 Mar 2025 17:08:49 +0000 Subject: [PATCH 3/3] Typo and wrong function name --- src/murfey/server/api/processing_parameters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/murfey/server/api/processing_parameters.py b/src/murfey/server/api/processing_parameters.py index c1449f33f..fa359c322 100644 --- a/src/murfey/server/api/processing_parameters.py +++ b/src/murfey/server/api/processing_parameters.py @@ -54,10 +54,10 @@ def set_session_processing_parameters( edited_parameters.dose_per_frame or proc_params.dose_per_frame ) proc_params.eer_fractionation_file = ( - edited_parameters.eer_fractioantion_file or proc_params.eer_fractionation_file + edited_parameters.eer_fractionation_file or proc_params.eer_fractionation_file ) proc_params.symmetry = edited_parameters.symmetry or proc_params.symmetry db.add(proc_params) db.commit() - db.exit() + db.close() return edited_parameters