fix: report user friendly error on attempted file overwrite #181

Merged
perl_d merged 2 commits from fix/improve-overwrite-error-message into main 2026-08-31 17:50:57 +02:00
5 changed files with 13 additions and 12 deletions
+1
View File
@@ -90,6 +90,7 @@ build-backend = "setuptools.build_meta"
[tool.setuptools.package-data]
"aare.gui.graphics" = ["*.svg", "*.png"]
"*" = ["*.json"]
[tool.black]
line-length = 100
+6 -1
View File
@@ -8,7 +8,7 @@ from typing import Concatenate, ParamSpec, TypeVar, final
import jfjoch_client
from aarecommon.config.beamline import get_jfjoch_url
from aarecommon.config.logger import setup_logger
from aarecommon.errors.exception_handler import JFJochCommunicationError
from aarecommon.errors.exception_handler import AareUserError, JFJochCommunicationError
from aarecommon.models.beamline import MXBeamline
from aarecommon.models.models import DAQStatusModel, FluorescenceSpectrumOutputModel
from aarecommon.models.raster_grid import RasterGridRequest
@@ -293,6 +293,11 @@ class JFJochWrapper:
)
return True
except Exception as e:
if "Output file already exists" in str(e):
raise AareUserError(
"JFJoch reports output file already exists! Change the filename or increment the run number.",
critical=True,
) from e
raise self._jfjoch_error(
f"JFJoch wait until running returned an exception: {e}",
error=e,
@@ -1,4 +1,3 @@
import secrets
from pathlib import Path
from aarecommon.config.beamline import cfg_get
@@ -189,7 +188,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
if is_single_image:
r = RotationScanRequest(
file_prefix=str(add_screening_to_path(self._filename)) + "_" + secrets.token_hex(3),
file_prefix=str(add_screening_to_path(self._filename)),
start_omega_deg=self.start_angle.value,
incr_omega_deg=self.screening_image_angle.value,
wedge_omega_deg=screening_settings["omega_step_deg"],
@@ -201,7 +200,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
)
else:
r = RotationScanRequest(
file_prefix=str(add_screening_to_path(self._filename)) + "_" + secrets.token_hex(3),
file_prefix=str(add_screening_to_path(self._filename)),
start_omega_deg=self.start_angle.value,
wedge_omega_deg=self.screening_image_angle.value,
incr_omega_deg=screening_settings["omega_step_deg"],
@@ -225,7 +224,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
logger.error("Cannot run measurement because of check")
return
r = RotationScanRequest(
file_prefix=str(add_data_to_path(self._filename)) + "_" + secrets.token_hex(3),
file_prefix=str(add_data_to_path(self._filename)),
start_omega_deg=self.start_angle.value,
steps=self.image_number(),
incr_omega_deg=self.image_angle.value,
+1 -4
View File
@@ -1,5 +1,4 @@
import math
import secrets
from aarecommon.config.logger import setup_logger
from aarecommon.models.models import CrystalSize, DAQStatusModel, SimpleScanParameters
@@ -402,16 +401,14 @@ class SimpleRotationSettingsPanel(QWidget):
d_tar=d_tar,
)
# logger.debug("updated labels")
if self._prev_params != self.parameters:
self._prev_params = self.parameters
self.parameters_changed.emit(self.parameters)
# logger.debug("emitted parameters")
@Slot()
def run_measurement(self):
r = RotationScanRequest(
file_prefix=str(add_data_to_path(self._filename)) + "_" + secrets.token_hex(3),
file_prefix=str(add_data_to_path(self._filename)),
start_omega_deg=self.start_angle_enter.value,
steps=self.n_images,
incr_omega_deg=self.image_angle_enter.value,
@@ -1,5 +1,4 @@
import math
import secrets
from enum import Enum
import numpy as np
@@ -459,7 +458,7 @@ class RasterGridManager(QObject):
grid = RasterGridRequest(
dtz=ag.dtz,
transmission=ag.transmission,
file_prefix=ag.file_prefix + "_" + secrets.token_hex(3),
file_prefix=ag.file_prefix,
exp_time_s=ag.exp_time_s,
n_x=ag.n_x,
n_y=ag.n_y,
@@ -485,7 +484,7 @@ class RasterGridManager(QObject):
grid = RasterGridRequest(
dtz=ag.dtz,
transmission=ag.transmission,
file_prefix=ag.file_prefix + "_" + secrets.token_hex(3),
file_prefix=ag.file_prefix,
exp_time_s=ag.exp_time_s,
n_x=ag.n_x,
n_y=ag.n_y,