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 #