Allow preferences customization using a configuration file. #6058

This commit is contained in:
Yogesh Mahajan
2024-02-15 14:58:31 +05:30
committed by GitHub
parent a74b0232f9
commit 5a74022e8a
7 changed files with 102 additions and 15 deletions

View File

@@ -282,6 +282,9 @@ def save_pref(data):
and data['value'].isspace():
data['value'] = ''
if data['value'] in ['true','false']:
data['value'] = True if data['value'] == 'true' else False
res, _ = Preferences.save_cli(
data['mid'], data['category_id'], data['id'], data['user_id'],
data['value'])

View File

@@ -378,7 +378,7 @@ export default function PreferencesComponent({ ...props }) {
if(field.visible && _.isNull(firstElement)) {
firstElement = field;
}
field.tooltip = item._parent._metadata.data.name + ':' + item._metadata.data.name + ':' + field.name;
field.tooltip = item._parent._metadata.data.name.toLowerCase() + ':' + item._metadata.data.name + ':' + field.name;
});
setLoadTree(crypto.getRandomValues(new Uint16Array(1)));
initTreeTimeout = setTimeout(() => {

View File

@@ -852,7 +852,7 @@ class PgadminPage:
backspaces = [Keys.BACKSPACE] * len(field.get_attribute('value'))
field.send_keys(backspaces)
field.send_keys(str(field_content))
self.wait_for_input_by_element(field, field_content)
# self.wait_for_input_by_element(field, field_content)
else:
self.driver.execute_script("arguments[0].value = arguments[1]",
field, field_content)

View File

@@ -40,14 +40,16 @@ from pgadmin.model import db, Version, User, \
SCHEMA_VERSION as CURRENT_SCHEMA_VERSION
from pgadmin import create_app
from pgadmin.utils import clear_database_servers, dump_database_servers, \
load_database_servers
load_database_servers, _handle_error
from pgadmin.setup import db_upgrade, create_app_data_directory
from typing import Optional, List
from typing_extensions import Annotated
from pgadmin.utils.constants import MIMETYPE_APP_JS, INTERNAL, LDAP, OAUTH2, \
from pgadmin.utils.constants import INTERNAL, LDAP, OAUTH2, \
KERBEROS, WEBSERVER
from pgadmin.tools.user_management import create_user, delete_user, update_user
from enum import Enum
from flask_babel import gettext
app = typer.Typer(pretty_exceptions_show_locals=False)
@@ -406,11 +408,8 @@ class ManagePreferences:
table = Table(title="Pref Details", box=box.ASCII)
table.add_column("Preference", style="green")
with app.app_context():
from pgadmin.preferences import save_pref
from pgadmin.utils.preferences import Preferences
from pgadmin.model import db, Preferences as PrefTable, \
from pgadmin.model import Preferences as PrefTable, \
ModulePreference as ModulePrefTable, \
UserPreference as UserPrefTable, \
PreferenceCategory as PrefCategoryTbl
module_prefs = ModulePrefTable.query.all()
@@ -448,14 +447,42 @@ class ManagePreferences:
print(table)
@app.command()
def set_prefs(username, pref_options: List[str],
def set_prefs(username,
pref_options: Annotated[Optional[List[str]],
typer.Argument()] = None,
auth_source: AuthType = AuthType.internal,
console: Optional[bool] = True,
json: Optional[bool] = False):
json: Optional[bool] = False,
input_file: Optional[str] = None):
"""Set User preferences."""
if input_file:
from urllib.parse import unquote
# generate full path of file
try:
file_path = unquote(input_file)
except Exception as e:
print(str(e))
return _handle_error(str(e), True)
import json as json_utility
try:
with open(file_path) as f:
data = json_utility.load(f)
except json_utility.decoder.JSONDecodeError as e:
return _handle_error(gettext("Error parsing input file %s: %s"
% (file_path, e)), True)
except Exception as e:
return _handle_error(
gettext("Error reading input file %s: [%d] %s" %
(file_path, e.errno, e.strerror)), True)
pref_data = data['preferences']
for k, v in pref_data.items():
pref_options.append(k + "=" + str(v))
user_id = ManagePreferences.get_user(username, auth_source)
app = create_app(config.APP_NAME + '-cli')
table = Table(title="Pref Details", box=box.ASCII)
table = Table(title="Updated Pref Details", box=box.ASCII)
table.add_column("Preference", style="green")
if not user_id:
print("User not found.")