mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Allow selection of SSL certificates and pgpass files in connection properties. Fixes #2649. Fixes #2650
This commit is contained in:
committed by
Dave Page
parent
510bc6c974
commit
f855ed88ce
@@ -156,7 +156,8 @@ class FileManagerModule(PgAdminModule):
|
||||
'file_manager.get_trans_id',
|
||||
'file_manager.delete_trans_id',
|
||||
'file_manager.save_last_dir',
|
||||
'file_manager.save_file_dialog_view'
|
||||
'file_manager.save_file_dialog_view',
|
||||
'file_manager.save_show_hidden_file_option'
|
||||
]
|
||||
|
||||
def get_file_size_preference(self):
|
||||
@@ -181,6 +182,11 @@ class FileManagerModule(PgAdminModule):
|
||||
options=[{'label': gettext('List'), 'value': 'list'},
|
||||
{'label': gettext('Grid'), 'value': 'grid'}]
|
||||
)
|
||||
self.show_hidden_files = self.preference.register(
|
||||
'options', 'show_hidden_files',
|
||||
gettext("Show hidden files and folders?"), 'boolean', False,
|
||||
category_label=gettext('Options')
|
||||
)
|
||||
|
||||
|
||||
# Initialise the module
|
||||
@@ -243,13 +249,18 @@ def file_manager_config(trans_id):
|
||||
data = Filemanager.get_trasaction_selection(trans_id)
|
||||
pref = Preferences.module('file_manager')
|
||||
file_dialog_view = pref.preference('file_dialog_view').get()
|
||||
show_hidden_files = pref.preference('show_hidden_files').get()
|
||||
|
||||
return Response(response=render_template(
|
||||
"file_manager/js/file_manager_config.json", _=gettext,
|
||||
data=data,
|
||||
file_dialog_view=file_dialog_view),
|
||||
"file_manager/js/file_manager_config.json",
|
||||
_=gettext,
|
||||
data=data,
|
||||
file_dialog_view=file_dialog_view,
|
||||
show_hidden_files=show_hidden_files
|
||||
),
|
||||
status=200,
|
||||
mimetype="application/json")
|
||||
mimetype="application/json"
|
||||
)
|
||||
|
||||
|
||||
@blueprint.route(
|
||||
@@ -300,6 +311,17 @@ def save_file_dialog_view(trans_id):
|
||||
data={'status': True}
|
||||
)
|
||||
|
||||
@blueprint.route(
|
||||
"/save_show_hidden_file_option/<int:trans_id>", methods=["PUT"],
|
||||
endpoint='save_show_hidden_file_option'
|
||||
)
|
||||
@login_required
|
||||
def save_show_hidden_file_option(trans_id):
|
||||
blueprint.show_hidden_files.set(req.json['show_hidden'])
|
||||
return make_json_response(
|
||||
data={'status': True}
|
||||
)
|
||||
|
||||
|
||||
class Filemanager(object):
|
||||
"""FileManager Class."""
|
||||
@@ -521,12 +543,14 @@ class Filemanager(object):
|
||||
kernel32.SetThreadErrorMode(oldmode, ctypes.byref(oldmode))
|
||||
|
||||
@staticmethod
|
||||
def list_filesystem(dir, path, trans_data, file_type):
|
||||
def list_filesystem(dir, path, trans_data, file_type, show_hidden):
|
||||
"""
|
||||
It lists all file and folders within the given
|
||||
directory.
|
||||
"""
|
||||
Filemanager.suspend_windows_warning()
|
||||
is_show_hidden_files = show_hidden
|
||||
|
||||
path = unquote(path)
|
||||
if hasattr(str, 'decode'):
|
||||
path = unquote(path).encode('utf-8').decode('utf-8')
|
||||
@@ -595,8 +619,9 @@ class Filemanager(object):
|
||||
protected = 0
|
||||
system_path = os.path.join(os.path.join(orig_path, f))
|
||||
|
||||
# continue if file/folder is hidden
|
||||
if is_folder_hidden(system_path) or f.startswith('.'):
|
||||
# continue if file/folder is hidden (based on user preference)
|
||||
if not is_show_hidden_files and \
|
||||
(is_folder_hidden(system_path) or f.startswith('.')):
|
||||
continue
|
||||
|
||||
user_path = os.path.join(os.path.join(user_dir, f))
|
||||
@@ -784,7 +809,8 @@ class Filemanager(object):
|
||||
|
||||
return thefile
|
||||
|
||||
def getfolder(self, path=None, file_type="", name=None, req=None):
|
||||
def getfolder(self, path=None, file_type="", name=None, req=None,
|
||||
show_hidden=False):
|
||||
"""
|
||||
Returns files and folders in give path
|
||||
"""
|
||||
@@ -795,7 +821,7 @@ class Filemanager(object):
|
||||
if not dir.endswith('/'):
|
||||
dir += u'/'
|
||||
|
||||
filelist = self.list_filesystem(dir, path, trans_data, file_type)
|
||||
filelist = self.list_filesystem(dir, path, trans_data, file_type, show_hidden)
|
||||
return filelist
|
||||
|
||||
def rename(self, old=None, new=None, req=None):
|
||||
|
||||
@@ -555,7 +555,6 @@ button.list span {
|
||||
|
||||
.allowed_file_types .change_file_types label {
|
||||
float: right;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.upload_file .file_upload_main {
|
||||
@@ -726,3 +725,7 @@ a.dz-remove {
|
||||
height: 100%;
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
div.change_file_types span {
|
||||
padding-left:10px;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ var getFileName = function(name) {
|
||||
var loadData = function(url) {
|
||||
return $.ajax({
|
||||
async: false,
|
||||
cache: false,
|
||||
url: url,
|
||||
dataType: 'jsonp',
|
||||
contentType: "application/json; charset=utf-8"
|
||||
@@ -70,6 +71,16 @@ var save_file_dialog_view = function(view, trans_id) {
|
||||
});
|
||||
};
|
||||
|
||||
var save_show_hidden_file_option = function(option, trans_id) {
|
||||
return $.ajax({
|
||||
url: url_for('file_manager.save_show_hidden_file_option', {'trans_id': trans_id}),
|
||||
type: 'PUT',
|
||||
async: true,
|
||||
data: JSON.stringify({'show_hidden': option}),
|
||||
contentType: 'application/json'
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* preg_replace
|
||||
@@ -523,7 +534,8 @@ var getFolderInfo = function(path, file_type) {
|
||||
var post_data = {
|
||||
'path': path,
|
||||
'mode': 'getfolder',
|
||||
'file_type': file_type || "*"
|
||||
'file_type': file_type || "*",
|
||||
'show_hidden': $('#show_hidden').prop('checked')
|
||||
};
|
||||
|
||||
var lg = pgAdmin.FileUtils.lg;
|
||||
@@ -1110,6 +1122,9 @@ pgAdmin.FileUtils = {
|
||||
have_all_types = false;
|
||||
|
||||
var select_box = "<div class='change_file_types'>" +
|
||||
gettext("Show hidden files and folders") +
|
||||
"? <input type='checkbox' id='show_hidden' onclick='pgAdmin.FileUtils.handleClick(this)'>" +
|
||||
"<span></span>" +
|
||||
"<select name='type'>";
|
||||
|
||||
while(i < types_len) {
|
||||
@@ -1139,6 +1154,31 @@ pgAdmin.FileUtils = {
|
||||
curr_path = $('.currentpath').val();
|
||||
getFolderInfo(curr_path, selected_val);
|
||||
});
|
||||
|
||||
// If user have preference to show hidden files
|
||||
if (config.options.show_hidden_files) {
|
||||
setTimeout(function() {
|
||||
$("#show_hidden").click();
|
||||
}, 10);
|
||||
}
|
||||
// handle show hidden files functionality
|
||||
this.handleClick = function(cb) {
|
||||
var data = {
|
||||
'is_checked': false
|
||||
};
|
||||
|
||||
if(cb.checked) {
|
||||
$("div.allowed_file_types select").val("*").trigger("change");
|
||||
data['is_checked'] = true;
|
||||
} else {
|
||||
// User wants to hide it again
|
||||
$("div.allowed_file_types select").prop('selectedIndex', 0).trigger("change");
|
||||
data['is_checked'] = false;
|
||||
}
|
||||
// Save it in preference
|
||||
save_show_hidden_file_option(data['is_checked'], pgAdmin.FileUtils.transId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"autoload": true,
|
||||
"showFullPath": false,
|
||||
"dialog_type": "{{data.dialog_type}}",
|
||||
"show_hidden_files": {% if show_hidden_files %}true{% else %}false{% endif%},
|
||||
"fileRoot": "{{data.fileroot}}",
|
||||
"capabilities": [{% for i in data.capabilities %}{% if loop.index != 1 %}, {% endif %}"{{i}}"{% endfor %}],
|
||||
"allowed_file_types": [{% for i in data.supported_types %}{% if loop.index != 1 %}, {% endif %}"{{i}}"{% endfor %}],
|
||||
|
||||
Reference in New Issue
Block a user