diff --git a/src/aare/daq/server.py b/src/aare/daq/server.py index e0f5f3e7..6d847d30 100644 --- a/src/aare/daq/server.py +++ b/src/aare/daq/server.py @@ -1483,8 +1483,10 @@ async def take_over_beamline( return "OK" -@app.post("/state/free_beamline") -async def free_beamline(payload: RecoveryActionRequest, token: str = Depends(oauth2_scheme)) -> str: +@app.post("/state/force_clear_busy") +async def force_clear_busy( + payload: RecoveryActionRequest, token: str = Depends(oauth2_scheme) +) -> str: """ Clear the beamline busy flag. Staff only. diff --git a/src/aare/gui/panels/beamline_recovery_panel.py b/src/aare/gui/panels/beamline_recovery_panel.py index aa5c5a85..09baee07 100644 --- a/src/aare/gui/panels/beamline_recovery_panel.py +++ b/src/aare/gui/panels/beamline_recovery_panel.py @@ -106,8 +106,8 @@ class RecoveryPanel(QWidget): self._take_over_btn.clicked.connect(self._take_over_beamline) layout.addWidget(self._take_over_btn) - self._free_beamline_btn = QPushButton("Free beamline", self) - self._free_beamline_btn.setStyleSheet( + self._force_clear_busy_btn = QPushButton("Clear busy flag", self) + self._force_clear_busy_btn.setStyleSheet( card_style( PENDING_CARD_BG, PENDING_CARD_BORDER, @@ -116,8 +116,8 @@ class RecoveryPanel(QWidget): extra="padding: 10px; font-weight: 600;", ) ) - self._free_beamline_btn.clicked.connect(self._free_beamline) - layout.addWidget(self._free_beamline_btn) + self._force_clear_busy_btn.clicked.connect(self._force_clear_busy) + layout.addWidget(self._force_clear_busy_btn) self._recover_beamline_btn = QPushButton("Recover beamline", self) self._recover_beamline_btn.setStyleSheet( @@ -201,8 +201,8 @@ class RecoveryPanel(QWidget): else "Disabled because no mounted sample is visible in current status." ) - self._free_beamline_btn.setEnabled(beamline_busy) - self._free_beamline_btn.setToolTip( + self._force_clear_busy_btn.setEnabled(beamline_busy) + self._force_clear_busy_btn.setToolTip( "" if beamline_busy else "Disabled because beamline does not currently appear busy." ) @@ -238,16 +238,17 @@ class RecoveryPanel(QWidget): self._daq.take_over_beamline(code) @Slot() - def _free_beamline(self) -> None: + def _force_clear_busy(self) -> None: if not self._confirm( - "Free beamline", "This will clear the beamline busy flag.\n\nDo you want to continue?" + "Clear busy flag", + "This will clear the beamline busy flag.\nAfter this, the server may still report that it is 'moving' if it is not in a defined state. You may then force the server into maintenance mode to recover.\nDo you want to continue?", ): return - code = self._prompt_recovery_code("Free beamline") + code = self._prompt_recovery_code("Clear busy flag") if not code: return self._last_action.setText("Last action: Clearing beamline busy flag...") - self._daq.free_beamline(code) + self._daq.force_clear_busy(code) @Slot() def _recover_beamline(self) -> None: diff --git a/src/aare/gui/threads/daq_worker.py b/src/aare/gui/threads/daq_worker.py index bd8ef669..98e6e5e9 100644 --- a/src/aare/gui/threads/daq_worker.py +++ b/src/aare/gui/threads/daq_worker.py @@ -872,12 +872,12 @@ class DAQWorker(QObject): self.generic_post("state/xtal_snapshot") @Slot(str) - def free_beamline(self, confirmation_code: str): + def force_clear_busy(self, confirmation_code: str): if self._base_url is None: - logger.info("POST /state/free_beamline") + logger.info("POST /state/force_clear_busy") return - request = QNetworkRequest(QUrl(f"{self._base_url}/state/free_beamline")) + request = QNetworkRequest(QUrl(f"{self._base_url}/state/force_clear_busy")) request.setRawHeader(b"Authorization", f"Bearer {self._token}".encode()) request.setRawHeader(b"Content-Type", b"application/json") body = json.dumps({"confirmation_code": confirmation_code})