UserQuery: add missing user name field.

This commit is contained in:
Chris PeBenito 2016-02-26 09:05:43 -05:00
parent 5c39a1fd8c
commit c3759ec164
2 changed files with 281 additions and 192 deletions

View File

@ -88,194 +88,7 @@
<string>Search Criteria</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Apply</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="level_criteria">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>Default MLS Level</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="level">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="level_exact">
<property name="toolTip">
<string>The level criterion will match if it is equal to the user's default level.</string>
</property>
<property name="text">
<string>Equal</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QRadioButton" name="level_dom">
<property name="toolTip">
<string>The level criterion will match if it dominates the user's default level.</string>
</property>
<property name="text">
<string>Dominate</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QRadioButton" name="level_domby">
<property name="toolTip">
<string>The level criterion will match if it is dominated by the user's default level.</string>
</property>
<property name="text">
<string>Dominated</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="range_criteria">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>MLS Range</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="range_">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="range_exact">
<property name="toolTip">
<string>The range criterion will match if it is equal to the user's range.</string>
</property>
<property name="text">
<string>Equal</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QRadioButton" name="range_subset">
<property name="toolTip">
<string>The range criterion will match if it is a subset of the user's range.</string>
</property>
<property name="text">
<string>Subset</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QRadioButton" name="range_overlap">
<property name="toolTip">
<string>The range criterion will match if it overlaps the user's range.</string>
</property>
<property name="text">
<string>Overlap</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QRadioButton" name="range_superset">
<property name="toolTip">
<string>The range criterion will match if it is a superset of the user's range.</string>
</property>
<property name="text">
<string>Superset</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" rowspan="2">
<item row="1" column="0" rowspan="2">
<widget class="QGroupBox" name="role_criteria">
<property name="title">
<string>Roles</string>
@ -384,6 +197,255 @@
</layout>
</widget>
</item>
<item row="2" column="1">
<widget class="QGroupBox" name="range_criteria">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>MLS Range</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="range_">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="range_exact">
<property name="toolTip">
<string>The range criterion will match if it is equal to the user's range.</string>
</property>
<property name="text">
<string>Equal</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QRadioButton" name="range_subset">
<property name="toolTip">
<string>The range criterion will match if it is a subset of the user's range.</string>
</property>
<property name="text">
<string>Subset</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QRadioButton" name="range_overlap">
<property name="toolTip">
<string>The range criterion will match if it overlaps the user's range.</string>
</property>
<property name="text">
<string>Overlap</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QRadioButton" name="range_superset">
<property name="toolTip">
<string>The range criterion will match if it is a superset of the user's range.</string>
</property>
<property name="text">
<string>Superset</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="name_criteria">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>User Name</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="1">
<widget class="QLineEdit" name="name">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="name_regex">
<property name="toolTip">
<string>Use regular expressions to match the user's name.</string>
</property>
<property name="text">
<string>Regex</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="level_criteria">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>Default MLS Level</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QLineEdit" name="level">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="level_exact">
<property name="toolTip">
<string>The level criterion will match if it is equal to the user's default level.</string>
</property>
<property name="text">
<string>Equal</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QRadioButton" name="level_dom">
<property name="toolTip">
<string>The level criterion will match if it dominates the user's default level.</string>
</property>
<property name="text">
<string>Dominate</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QRadioButton" name="level_domby">
<property name="toolTip">
<string>The level criterion will match if it is dominated by the user's default level.</string>
</property>
<property name="text">
<string>Dominated</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Apply</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QTabWidget" name="results_frame">
@ -575,6 +637,8 @@
</customwidgets>
<tabstops>
<tabstop>users</tabstop>
<tabstop>name</tabstop>
<tabstop>name_regex</tabstop>
<tabstop>roles</tabstop>
<tabstop>roles_any</tabstop>
<tabstop>roles_equal</tabstop>

View File

@ -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
#