Fixed an issue where pgAdmin failed to start due to bin path migration. Fixes #7557

This commit is contained in:
Aditya Toshniwal 2022-09-15 13:13:38 +05:30 committed by Akshay Joshi
parent 01a9a41bd9
commit 985546fff6
2 changed files with 31 additions and 29 deletions

View File

@ -29,6 +29,7 @@ Housekeeping
Bug fixes Bug fixes
********* *********
| `Issue #7557 <https://redmine.postgresql.org/issues/7557>`_ - Fixed an issue where pgAdmin failed to start due to bin path migration.
| `Issue #7580 <https://redmine.postgresql.org/issues/7580>`_ - Fixed an issue where backup does not work due to parameter 'preexec_fn' no longer being supported. | `Issue #7580 <https://redmine.postgresql.org/issues/7580>`_ - Fixed an issue where backup does not work due to parameter 'preexec_fn' no longer being supported.
| `Issue #7607 <https://redmine.postgresql.org/issues/7607>`_ - Ensure that the browser tree should be refreshed after changing the ownership. | `Issue #7607 <https://redmine.postgresql.org/issues/7607>`_ - Ensure that the browser tree should be refreshed after changing the ownership.
| `Issue #7644 <https://redmine.postgresql.org/issues/7644>`_ - Ensure that the dump servers functionality works from setup.py. | `Issue #7644 <https://redmine.postgresql.org/issues/7644>`_ - Ensure that the dump servers functionality works from setup.py.

View File

@ -62,6 +62,36 @@ class ServerType(object):
paths = Preferences('paths', _('Paths')) paths = Preferences('paths', _('Paths'))
bin_paths = copy.deepcopy(BINARY_PATHS) bin_paths = copy.deepcopy(BINARY_PATHS)
def path_converter(old_path):
"""
This function is used to convert old path to the
new paths which are in JSON format.
"""
bin_paths_server_based = \
copy.deepcopy(BINARY_PATHS['pg_bin_paths'])
if key == 'ppas':
bin_paths_server_based = \
copy.deepcopy(BINARY_PATHS['as_bin_paths'])
if not ServerType.is_binary_path_of_type_json(old_path):
set_binary_path(old_path, bin_paths_server_based,
key, set_as_default=True)
else:
bin_path_dict = \
{item['version']: item for item in bin_paths_server_based}
old_path_dict = \
{item['version']: item for item in json.loads(old_path)}
for item in bin_path_dict:
bin_path_dict[item].update(old_path_dict.get(item, {}))
bin_paths_server_based = list(bin_path_dict.values())
# Set the DEFAULT_BINARY_PATHS if any
ServerType.set_default_binary_path(bin_paths_server_based, key)
return json.dumps(bin_paths_server_based)
for key in cls.registry: for key in cls.registry:
st = cls.registry[key] st = cls.registry[key]
@ -91,35 +121,6 @@ class ServerType(object):
category_label=_('Binary paths') category_label=_('Binary paths')
) )
def path_converter(old_path):
"""
This function is used to convert old path to the
new paths which are in JSON format.
"""
bin_paths_server_based = \
copy.deepcopy(BINARY_PATHS['pg_bin_paths'])
if key == 'ppas':
bin_paths_server_based = \
copy.deepcopy(BINARY_PATHS['as_bin_paths'])
bin_path_dict = \
{item['version']: item for item in bin_paths_server_based}
old_path_dict = \
{item['version']: item for item in json.loads(old_path)}
for item in bin_path_dict:
bin_path_dict[item].update(old_path_dict.get(item, {}))
bin_paths_server_based = list(bin_path_dict.values())
if not ServerType.is_binary_path_of_type_json(old_path):
set_binary_path(old_path, bin_paths_server_based,
key, set_as_default=True)
# Set the DEFAULT_BINARY_PATHS if any
ServerType.set_default_binary_path(bin_paths_server_based, key)
return json.dumps(bin_paths_server_based)
# Run the migrate user preferences. # Run the migrate user preferences.
paths.migrate_user_preferences(st.utility_path.pid, paths.migrate_user_preferences(st.utility_path.pid,
path_converter) path_converter)