From 5e30fcf3cc9248b0991239dd7bf2b2bdb6c0baa6 Mon Sep 17 00:00:00 2001 From: Shekar V Date: Tue, 5 Mar 2024 17:05:50 -0500 Subject: [PATCH] Fixed proposal membership query so that production API server is used --- gui/dewar_tree.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gui/dewar_tree.py b/gui/dewar_tree.py index 79657c36..63943b10 100644 --- a/gui/dewar_tree.py +++ b/gui/dewar_tree.py @@ -44,7 +44,7 @@ def __init__(self, parent: "ControlMain"): self.customContextMenuRequested.connect(self.openMenu) self.setStyleSheet("QTreeView::item::hover{background-color: #999966;}") # Keeps track of whether the user is part of a proposal - self.proposal_membership = {} + self.proposal_membership = set() def openMenu(self, position): indexes = self.selectedIndexes() @@ -272,19 +272,19 @@ def add_samples_to_puck_tree( self.parent.row_clicked(current_index) def is_proposal_member(self, proposal_id) -> bool: - # Check if the user running LSDC is part of the sample's proposal - if proposal_id not in self.proposal_membership: - r = requests.get(f"{os.environ['NSLS2_API_URL']}/proposal/{proposal_id}") + # Check if the user running LSDC is part of the sample's proposal + # If the proposal_membership set is empty get data from API (Use prod API) + # This way API is only polled once when GUI starts + if not self.proposal_membership: + r = requests.get(f"{os.environ['NSLS2_API_URL']}/v1/data-session/{getpass.getuser()}") r.raise_for_status() response = r.json() - if "users" in response and getpass.getuser() in [ - user["username"] for user in response["users"] if "username" in user - ]: - self.proposal_membership[proposal_id] = True - else: - logger.info(f"Users not found in response: {response}") - self.proposal_membership[proposal_id] = False - return self.proposal_membership[proposal_id] + for session in response.get("data_sessions", []): + # Assuming data_sessions has values of the form "pass-123456" + proposal = session.split("-")[1] + self.proposal_membership.add(proposal) + print(f"Updated proposal_membership for {getpass.getuser()}: {self.proposal_membership}") + return str(proposal_id) in self.proposal_membership def create_request_item(self, request) -> QtGui.QStandardItem: col_item = QtGui.QStandardItem(