Prevent an error when closing the Sort/Filter dialogue with an empty filter string. Fixes #3970

This commit is contained in:
Akshay Joshi
2019-02-13 16:44:57 +00:00
committed by Dave Page
parent 6af8efb5b1
commit 944cc55df7
2 changed files with 20 additions and 16 deletions

View File

@@ -20,6 +20,7 @@ Bug fixes
| `Bug #3942 <https://redmine.postgresql.org/issues/3942>`_ - Close connections gracefully when the user logs out of pgAdmin.
| `Bug #3946 <https://redmine.postgresql.org/issues/3946>`_ - Fix alignment of checkbox to drop multiple schedules of pgAgent job.
| `Bug #3963 <https://redmine.postgresql.org/issues/3963>`_ - Fix alignment of import/export toggle switch.
| `Bug #3970 <https://redmine.postgresql.org/issues/3970>`_ - Prevent an error when closing the Sort/Filter dialogue with an empty filter string.
| `Bug #3974 <https://redmine.postgresql.org/issues/3974>`_ - Fix alignment of Connection type toggle switch of pgagent.
| `Bug #3981 <https://redmine.postgresql.org/issues/3981>`_ - Fix the query to set bytea_output so that read-only standbys don't consider it a write query.
| `Bug #3985 <https://redmine.postgresql.org/issues/3985>`_ - Don't embed docs and external sites in iframes, to allow the external sites to set X-FRAME-OPTIONS = DENY for security.

View File

@@ -164,9 +164,10 @@ class SQLFilter(object):
self.sid = kwargs['sid']
self.did = kwargs['did']
self.obj_id = kwargs['obj_id']
self.__row_filter = kwargs.get('sql_filter', None)
self.__dara_sorting = kwargs.get('data_sorting', None)
self.__set_sorting_from_filter_dialog = False
sql_filter = kwargs.get('sql_filter', None)
self._row_filter = sql_filter if type(sql_filter) is str else None
self._data_sorting = kwargs.get('data_sorting', None)
self._set_sorting_from_filter_dialog = False
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(self.sid)
conn = manager.connection(did=self.did)
@@ -197,7 +198,7 @@ class SQLFilter(object):
"""
This function returns the filter.
"""
return self.__row_filter
return self._row_filter
def set_filter(self, row_filter):
"""
@@ -207,11 +208,13 @@ class SQLFilter(object):
Args:
row_filter: sql query
"""
if type(row_filter) is not str:
row_filter = None
status, msg = self.validate_filter(row_filter)
if status:
self.__row_filter = row_filter
self._row_filter = row_filter
return status, msg
@@ -219,8 +222,8 @@ class SQLFilter(object):
"""
This function returns the filter.
"""
if self.__dara_sorting and len(self.__dara_sorting) > 0:
return self.__dara_sorting
if self._data_sorting and len(self._data_sorting) > 0:
return self._data_sorting
return None
def set_data_sorting(self, data_filter, set_from_filter_dialog=False):
@@ -228,23 +231,23 @@ class SQLFilter(object):
This function validates the filter and set the
given filter to member variable.
"""
self.__dara_sorting = data_filter['data_sorting']
self.__set_sorting_from_filter_dialog = set_from_filter_dialog
self._data_sorting = data_filter['data_sorting']
self._set_sorting_from_filter_dialog = set_from_filter_dialog
def is_sorting_set_from_filter_dialog(self):
"""This function return whether sorting is set from filter dialog"""
return self.__set_sorting_from_filter_dialog
return self._set_sorting_from_filter_dialog
def is_filter_applied(self):
"""
This function returns True if filter is applied else False.
"""
is_filter_applied = True
if self.__row_filter is None or self.__row_filter == '':
if self._row_filter is None or self._row_filter == '':
is_filter_applied = False
if not is_filter_applied:
if self.__dara_sorting and len(self.__dara_sorting) > 0:
if self._data_sorting and len(self._data_sorting) > 0:
is_filter_applied = True
return is_filter_applied
@@ -253,8 +256,8 @@ class SQLFilter(object):
"""
This function remove the filter by setting value to None.
"""
self.__row_filter = None
self.__dara_sorting = None
self._row_filter = None
self._data_sorting = None
def append_filter(self, row_filter):
"""
@@ -268,9 +271,9 @@ class SQLFilter(object):
existing_filter = self.get_filter()
if existing_filter is None or existing_filter == '':
self.__row_filter = row_filter
self._row_filter = row_filter
else:
self.__row_filter = existing_filter + ' \n AND ' + row_filter
self._row_filter = existing_filter + ' \n AND ' + row_filter
def validate_filter(self, row_filter):
"""