Skip to content

Commit 05e42d0

Browse files
committed
Add post endpoint for setting session processing parameters
1 parent 28a47f7 commit 05e42d0

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed
Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
from logging import getLogger
2+
from typing import Optional
23

3-
from fastapi import APIRouter
4+
from fastapi import APIRouter, Depends
45
from pydantic import BaseModel
56
from sqlmodel import Session, select
67

8+
from murfey.server.api.auth import MurfeySessionID, validate_token
79
from murfey.server.murfey_db import murfey_db
810
from murfey.util.db import SessionProcessingParameters
911

1012
logger = getLogger("murfey.server.api.processing_parameters")
1113

12-
router = APIRouter()
14+
router = APIRouter(dependencies=[Depends(validate_token)])
1315

1416

1517
class EditableSessionProcessingParameters(BaseModel):
16-
gain_ref: str
17-
dose_per_frame: float
18-
eer_fractionation_file: str
19-
symmetry: str
18+
gain_ref: str = ""
19+
dose_per_frame: Optional[float] = None
20+
eer_fractionation_file: str = ""
21+
symmetry: str = ""
2022

2123

2224
@router.get("sessions/{session_id}/session_processing_parameters")
2325
def get_session_processing_parameters(
24-
session_id: int, db: Session = murfey_db
26+
session_id: MurfeySessionID, db: Session = murfey_db
2527
) -> EditableSessionProcessingParameters:
2628
proc_params = db.exec(
2729
select(SessionProcessingParameters).where(
@@ -34,3 +36,28 @@ def get_session_processing_parameters(
3436
eer_fractionation_file=proc_params.eer_fractionation_file,
3537
symmetry=proc_params.symmetry,
3638
)
39+
40+
41+
@router.post("sessions/{session_id}/session_processing_parameters")
42+
def set_session_processing_parameters(
43+
session_id: MurfeySessionID,
44+
edited_parameters: EditableSessionProcessingParameters,
45+
db: Session = murfey_db,
46+
) -> EditableSessionProcessingParameters:
47+
proc_params = db.exec(
48+
select(SessionProcessingParameters).where(
49+
SessionProcessingParameters.session_id == session_id
50+
)
51+
).one()
52+
proc_params.gain_ref = edited_parameters.gain_ref or proc_params.gain_ref
53+
proc_params.dose_per_frame = (
54+
edited_parameters.dose_per_frame or proc_params.dose_per_frame
55+
)
56+
proc_params.eer_fractionation_file = (
57+
edited_parameters.eer_fractioantion_file or proc_params.eer_fractionation_file
58+
)
59+
proc_params.symmetry = edited_parameters.symmetry or proc_params.symmetry
60+
db.add(proc_params)
61+
db.commit()
62+
db.exit()
63+
return edited_parameters

0 commit comments

Comments
 (0)