diff --git a/data/userquery.ui b/data/userquery.ui
index 897dec0..aeebc5a 100644
--- a/data/userquery.ui
+++ b/data/userquery.ui
@@ -88,194 +88,7 @@
Search Criteria
- -
-
-
- QDialogButtonBox::Apply
-
-
-
- -
-
-
-
- 16777215
- 120
-
-
-
- Default MLS Level
-
-
-
- 6
-
-
- 6
-
-
- 6
-
-
- 6
-
-
- 3
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 150
- 20
-
-
-
-
- 250
- 16777215
-
-
-
-
- -
-
-
- The level criterion will match if it is equal to the user's default level.
-
-
- Equal
-
-
- true
-
-
-
- -
-
-
- The level criterion will match if it dominates the user's default level.
-
-
- Dominate
-
-
-
- -
-
-
- The level criterion will match if it is dominated by the user's default level.
-
-
- Dominated
-
-
-
-
-
-
- -
-
-
-
- 16777215
- 120
-
-
-
- MLS Range
-
-
-
- 6
-
-
- 6
-
-
- 6
-
-
- 6
-
-
- 3
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 150
- 20
-
-
-
-
- 250
- 16777215
-
-
-
-
- -
-
-
- The range criterion will match if it is equal to the user's range.
-
-
- Equal
-
-
- true
-
-
-
- -
-
-
- The range criterion will match if it is a subset of the user's range.
-
-
- Subset
-
-
-
- -
-
-
- The range criterion will match if it overlaps the user's range.
-
-
- Overlap
-
-
-
- -
-
-
- The range criterion will match if it is a superset of the user's range.
-
-
- Superset
-
-
-
-
-
-
- -
+
-
Roles
@@ -384,6 +197,255 @@
+ -
+
+
+
+ 16777215
+ 120
+
+
+
+ MLS Range
+
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 3
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 150
+ 20
+
+
+
+
+ 250
+ 16777215
+
+
+
+
+ -
+
+
+ The range criterion will match if it is equal to the user's range.
+
+
+ Equal
+
+
+ true
+
+
+
+ -
+
+
+ The range criterion will match if it is a subset of the user's range.
+
+
+ Subset
+
+
+
+ -
+
+
+ The range criterion will match if it overlaps the user's range.
+
+
+ Overlap
+
+
+
+ -
+
+
+ The range criterion will match if it is a superset of the user's range.
+
+
+ Superset
+
+
+
+
+
+
+ -
+
+
+
+ 16777215
+ 120
+
+
+
+ User Name
+
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 3
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 150
+ 20
+
+
+
+
+ 250
+ 16777215
+
+
+
+
+ -
+
+
+ Use regular expressions to match the user's name.
+
+
+ Regex
+
+
+
+
+
+
+ -
+
+
+
+ 16777215
+ 120
+
+
+
+ Default MLS Level
+
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 3
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 150
+ 20
+
+
+
+
+ 250
+ 16777215
+
+
+
+
+ -
+
+
+ The level criterion will match if it is equal to the user's default level.
+
+
+ Equal
+
+
+ true
+
+
+
+ -
+
+
+ The level criterion will match if it dominates the user's default level.
+
+
+ Dominate
+
+
+
+ -
+
+
+ The level criterion will match if it is dominated by the user's default level.
+
+
+ Dominated
+
+
+
+
+
+
+ -
+
+
+ QDialogButtonBox::Apply
+
+
+
@@ -575,6 +637,8 @@
users
+ name
+ name_regex
roles
roles_any
roles_equal
diff --git a/setoolsgui/apol/userquery.py b/setoolsgui/apol/userquery.py
index 8b82fb6..87908f4 100644
--- a/setoolsgui/apol/userquery.py
+++ b/setoolsgui/apol/userquery.py
@@ -63,11 +63,13 @@ class UserQueryTab(SEToolsWidget, QScrollArea):
self.sort_proxy.setSourceModel(self.table_results_model)
self.table_results.setModel(self.sort_proxy)
+ # setup indications of errors on level/range
+ self.orig_palette = self.name.palette()
+ self.error_palette = self.name.palette()
+ self.error_palette.setColor(QPalette.Base, Qt.red)
+ self.clear_name_error()
+
if self.policy.mls:
- # setup indications of errors on level/range
- self.orig_palette = self.level.palette()
- self.error_palette = self.level.palette()
- self.error_palette.setColor(QPalette.Base, Qt.red)
self.clear_level_error()
self.clear_range_error()
else:
@@ -98,6 +100,9 @@ class UserQueryTab(SEToolsWidget, QScrollArea):
# connect signals
self.users.doubleClicked.connect(self.get_detail)
self.users.get_detail.triggered.connect(self.get_detail)
+ self.name.textEdited.connect(self.clear_name_error)
+ self.name.editingFinished.connect(self.set_name)
+ self.name_regex.toggled.connect(self.set_name_regex)
self.roles.selectionModel().selectionChanged.connect(self.set_roles)
self.invert_roles.clicked.connect(self.invert_role_selection)
self.level.textEdited.connect(self.clear_level_error)
@@ -117,6 +122,26 @@ class UserQueryTab(SEToolsWidget, QScrollArea):
self.log.debug("Generating detail window for {0}".format(item))
user_detail(self, item)
+ #
+ # Name criteria
+ #
+ def clear_name_error(self):
+ self.name.setToolTip("Match the user name.")
+ self.name.setPalette(self.orig_palette)
+
+ def set_name(self):
+ try:
+ self.query.name = self.name.text()
+ except Exception as ex:
+ self.name.setToolTip("Error: " + str(ex))
+ self.name.setPalette(self.error_palette)
+
+ def set_name_regex(self, state):
+ self.log.debug("Setting name_regex {0}".format(state))
+ self.query.name_regex = state
+ self.clear_name_error()
+ self.set_name()
+
#
# Role criteria
#