diff --git a/src/aare/daq/server.py b/src/aare/daq/server.py index 8735924b..da3b3ccf 100644 --- a/src/aare/daq/server.py +++ b/src/aare/daq/server.py @@ -1,5 +1,6 @@ import asyncio import hmac +import importlib import io import json import os @@ -722,6 +723,16 @@ def initialise_detector(self): raise +@app.get("/about/running_version") +async def running_version() -> str: + return importlib.metadata.version("aare") + + +@app.get("/about/server_file_path") +async def server_file() -> str: + return __file__ + + @app.get("/local_contact/simulation_state") async def local_contact_simulation_state(token: str = Depends(oauth2_scheme)) -> dict: """ diff --git a/src/aare/gui/about.py b/src/aare/gui/about.py index 4db38cb4..6b5b8596 100644 --- a/src/aare/gui/about.py +++ b/src/aare/gui/about.py @@ -1,18 +1,27 @@ import importlib import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from aare.gui.threads.daq_worker import DAQWorker -def about_text(): +def about_text(client: DAQWorker): from aare.gui import gui try: version = importlib.metadata.version("aaredaq") except Exception: version = "Not found - package is not installed into the environment." + + server_version, server_file_path = client.server_about_info() + return f"""Aare Macromolecular Crystallography GUI Copyright: Paul Scherrer Institute 2023-2026 --- Version: {version} GUI file: {gui.__file__} Interpreter: {sys.executable} +Server version: {server_version} +Server file: {server_file_path} """ diff --git a/src/aare/gui/main_window.py b/src/aare/gui/main_window.py index 06cb4220..2dc40a1b 100644 --- a/src/aare/gui/main_window.py +++ b/src/aare/gui/main_window.py @@ -1606,7 +1606,7 @@ class MainWindow(QMainWindow): self.video_tab.setCurrentIndex(0) def show_about_dialog(self): - QMessageBox.about(self, "About", about_text()) + QMessageBox.about(self, "About", about_text(self.daq)) def show_controls_help(self) -> None: if self._controls_help_dialog is None: diff --git a/src/aare/gui/threads/daq_worker.py b/src/aare/gui/threads/daq_worker.py index 29831a8c..84d41d14 100644 --- a/src/aare/gui/threads/daq_worker.py +++ b/src/aare/gui/threads/daq_worker.py @@ -356,6 +356,17 @@ class DAQWorker(QObject): reply = self.__net_manager.get(request) reply.finished.connect(lambda: self.handle_status_response(reply)) + def server_about_info(self) -> tuple[str, str]: + version_request = QNetworkRequest(QUrl(f"{self.__base_url}/about/version")) + version_reply = self.__net_manager.get(version_request) + file_request = QNetworkRequest(QUrl(f"{self.__base_url}/about/server_file_path")) + file_reply = self.__net_manager.get(file_request) + version = ( + str(version_reply.readAll()) if version_reply.waitForReadyRead(500) else "Not connected" + ) + file = str(file_reply.readAll()) if file_reply.waitForReadyRead(500) else "Not connected" + return version, file + _SELF_SIGNED_ERRORS = { QSslError.SslError.SelfSignedCertificate, QSslError.SslError.SelfSignedCertificateInChain,