From 8ef53955d471d8bcdd807596164d723cd0dfd8e0 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Mon, 3 Nov 2025 16:26:47 +0100 Subject: [PATCH] GUI: status bad - upated avaialbe pgroups for staff to be all --- gui/src/aaregui/widgets/status_bar.py | 40 +++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/gui/src/aaregui/widgets/status_bar.py b/gui/src/aaregui/widgets/status_bar.py index e7513105..dc3cc21d 100644 --- a/gui/src/aaregui/widgets/status_bar.py +++ b/gui/src/aaregui/widgets/status_bar.py @@ -9,7 +9,7 @@ from aaregui.widgets.value_label import ValueLabel from aaredaqlib.logger_config import setup_logger -logger = setup_logger(__name__) +logger = setup_logger("aareGUI") class StatusBar(QStatusBar): set_pgroup = Signal(str) @@ -22,6 +22,8 @@ class StatusBar(QStatusBar): end_session = Signal() close_shutter = Signal() open_shutter = Signal() + get_all_pgroups = Signal() + staff_pgroups_loaded = Signal(list) def __init__(self, token: TokenData, parent=None): super().__init__(parent) @@ -263,7 +265,6 @@ class StatusBar(QStatusBar): session_ownership = self.__status.session.session == SessionsStateEnum.OwnedByYou have_pgroup = (self.__status.session.current_pgroup in (self.__allowed_pgroups or [])) allowed = (not self.__status.busy and check_state and session_ownership and have_pgroup) or self.__is_staff - logger.info(f"do I have the baton in on grab clicked? {session_ownership}") if allowed: self.show_change_dialog() @@ -298,11 +299,38 @@ class StatusBar(QStatusBar): def open_shutter_clicked(self): self.open_shutter.emit() - def show_change_dialog(self): - logger.debug(self.__decoded_token.pgroups) - curr = self.__status.session.current_pgroup - pgroups = [str(p) for p in (self.__allowed_pgroups or []) if p is not None and str(p).strip()] + def __list_staff_pgroups(self): + self.get_all_pgroups.emit() + return + + def _generate_pgroup_dialogue(self, curr: str | None = None, pgroups: list | None = None): dialog = PGroupDialog(curr_pgroup=curr, pgroups=pgroups) if dialog.exec() == QDialog.DialogCode.Accepted: entered_text = dialog.get_input() self.set_pgroup.emit(entered_text) + + def show_change_dialog(self): + logger.debug(self.__decoded_token.pgroups) + curr = self.__status.session.current_pgroup + pgroups = [str(p) for p in (self.__allowed_pgroups or []) if p is not None and str(p).strip()] + if self.__is_staff: + def _on_loaded(lst: list): + try: + merged = {str(p).strip() for p in (lst or []) if p is not None and str(p).strip()} + if not merged: + merged = set(pgroups) + self._generate_pgroup_dialogue(curr=curr, pgroups=sorted(merged)) + finally: + try: + self.staff_pgroups_loaded.disconnect(_on_loaded) + except Exception as e: + logger.debug(f"Error disconnecting: {e}") + pass + + self.staff_pgroups_loaded.connect(_on_loaded) + self.__list_staff_pgroups() + return + # logger.debug(staff_pgroups) + # pgroups = [str(p) for p in (staff_pgroups or pgroups or []) if p is not None and str(p).strip()] + # logger.debug(pgroups) + self._generate_pgroup_dialogue(curr=curr, pgroups=pgroups)