Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 35 additions & 8 deletions src/murfey/server/api/processing_parameters.py
Original file line number Diff line number Diff line change
@@ -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")
@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(
Expand All @@ -34,3 +36,28 @@
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(

Check warning on line 47 in src/murfey/server/api/processing_parameters.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/processing_parameters.py#L47

Added line #L47 was not covered by tests
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 = (

Check warning on line 53 in src/murfey/server/api/processing_parameters.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/processing_parameters.py#L52-L53

Added lines #L52 - L53 were not covered by tests
edited_parameters.dose_per_frame or proc_params.dose_per_frame
)
proc_params.eer_fractionation_file = (

Check warning on line 56 in src/murfey/server/api/processing_parameters.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/processing_parameters.py#L56

Added line #L56 was not covered by tests
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.close()
return edited_parameters

Check warning on line 63 in src/murfey/server/api/processing_parameters.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/processing_parameters.py#L59-L63

Added lines #L59 - L63 were not covered by tests