Skip to content

Commit 501bd36

Browse files
committed
fix: show resource ID in dropdown when user lacks list permission
When a user has a farm/queue ID configured but lacks permission to list farms/queues, the settings dropdown would show '<none selected>'. Now it displays the configured ID instead, allowing users with limited permissions to still see their configured resources. Signed-off-by: rickrams <rickrams@users.noreply.github.com>
1 parent 478bf6e commit 501bd36

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

src/deadline/client/ui/dialogs/deadline_config_dialog.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1030,8 +1030,15 @@ def refresh_selected_id(self):
10301030
index = self.box.findData(selected_id)
10311031
if index >= 0:
10321032
self.box.setCurrentIndex(index)
1033+
elif selected_id:
1034+
# User has a configured ID but it's not in the list. This happens when
1035+
# the user has permission to use a resource (e.g., queue) but lacks
1036+
# permission to list resources (e.g., ListFarms). Show the raw ID so
1037+
# they can still see their configured resource.
1038+
self.box.insertItem(0, selected_id, userData=selected_id)
1039+
self.box.setCurrentIndex(0)
10331040
else:
1034-
# Some cases allow to select "nothing" and insert an item to indicate such
1041+
# No ID selected
10351042
index = self.box.findText("<none selected>")
10361043
if index >= 0:
10371044
self.box.setCurrentIndex(index)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
3+
from configparser import ConfigParser
4+
from unittest.mock import patch
5+
6+
import pytest
7+
8+
try:
9+
from deadline.client.ui.dialogs.deadline_config_dialog import _DeadlineResourceListComboBox
10+
except ImportError:
11+
pytest.importorskip("deadline.client.ui.dialogs.deadline_config_dialog")
12+
13+
14+
class TestDeadlineResourceListComboBox:
15+
"""Tests for _DeadlineResourceListComboBox.refresh_selected_id()"""
16+
17+
@patch("deadline.client.ui.dialogs.deadline_config_dialog.config_file")
18+
def test_shows_id_when_not_in_list(self, mock_config_file, qtbot):
19+
"""
20+
When user has a configured ID but lacks permission to list resources,
21+
the combobox should display the raw ID instead of '<none selected>'.
22+
23+
This happens when a user has permission to use a queue but lacks
24+
permission to call ListFarms.
25+
"""
26+
mock_config_file.get_setting.return_value = "farm-abc123"
27+
28+
widget = _DeadlineResourceListComboBox("Farm", "defaults.farm_id")
29+
qtbot.addWidget(widget)
30+
widget.set_config(ConfigParser())
31+
32+
widget.refresh_selected_id()
33+
34+
assert widget.box.currentText() == "farm-abc123"
35+
assert widget.box.currentData() == "farm-abc123"
36+
37+
@patch("deadline.client.ui.dialogs.deadline_config_dialog.config_file")
38+
def test_shows_none_selected_when_no_id_configured(self, mock_config_file, qtbot):
39+
"""When no ID is configured, should show '<none selected>'."""
40+
mock_config_file.get_setting.return_value = ""
41+
42+
widget = _DeadlineResourceListComboBox("Farm", "defaults.farm_id")
43+
qtbot.addWidget(widget)
44+
widget.set_config(ConfigParser())
45+
46+
widget.refresh_selected_id()
47+
48+
assert widget.box.currentText() == "<none selected>"

0 commit comments

Comments
 (0)