GUI: daq_worker.py added handle all prgroups request for staff members

This commit is contained in:
appleb_m committed 2025-11-03 16:25:50 +01:00
1 parent 82a478925a
commit da821a5e3d
1 file changed
+28
+28
View File
@@ -31,6 +31,7 @@ class DAQWorker(QObject):
standard_scan_completed = Signal(CompletedRotationScan)
raster_generated_by_ml = Signal(RasterGridRequest)
face_detection_result = Signal(dict)
staff_pgroups_loaded = Signal(list)
def __init__(self, base_url: str | None, token: str, parent=None):
super().__init__(parent)
@@ -223,6 +224,33 @@ class DAQWorker(QObject):
else:
self.generic_put(f"access/pgroup?val={val}")
@Slot(QNetworkReply)
def _handle_all_pgroups_response(self, reply: QNetworkReply):
try:
response_data = self.handle_response(reply)
import json
arr = json.loads(response_data) if response_data else []
if not isinstance(arr, list):
raise RuntimeError("Invalid all_pgroups payload")
# Ensure list[str]
out = [str(x) for x in arr if isinstance(x, (str, int))]
self.staff_pgroups_loaded.emit(out)
except Exception as e:
logger.error(f"Exception from all_pgroups response: {e}")
self.http_error.emit(str(e))
@Slot()
def get_all_pgroups(self):
logger.debug("PUT /access/all_pgroups")
if self.__base_url is None:
self.staff_pgroups_loaded.emit([])
return
request = QNetworkRequest(QUrl(f"{self.__base_url}/access/all_pgroups"))
request.setRawHeader(b"Authorization", f"Bearer {self.__token}".encode("utf-8"))
request.setRawHeader(b"Content-Type", b"application/json")
reply = self.__net_manager.put(request, QByteArray(b""))
reply.finished.connect(lambda: self._handle_all_pgroups_response(reply))
@Slot(SampleCameraSettings)
def samcam_settings(self, s: SampleCameraSettings):
self.generic_put("beamline/samcam", s.model_dump_json())