Hi Akshay, Please find an updated patch. I missed few lines in my previous patch.
On Wed, Apr 7, 2021 at 3:45 PM Akshay Joshi <akshay.jo...@enterprisedb.com> wrote: > Hi Pradip > > The issue is not fixed as per the expectation. Please fix and resend the > patch. > > On Wed, Apr 7, 2021 at 1:17 PM Pradip Parkale < > pradip.park...@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Please find the attached patch for #6325 - Tools > Storage Manager should >> have file type as "All files" by default. >> >> >> -- >> Thanks & Regards, >> Pradip Parkale >> Software Engineer | EnterpriseDB Corporation >> > > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Principal Software Architect* > *EDB Postgres <http://edbpostgres.com>* > > *Mobile: +91 976-788-8246* > -- Thanks & Regards, Pradip Parkale Software Engineer | EnterpriseDB Corporation
diff --git a/web/pgadmin/misc/file_manager/static/js/utility.js b/web/pgadmin/misc/file_manager/static/js/utility.js index 67c4be047..2766ee957 100644 --- a/web/pgadmin/misc/file_manager/static/js/utility.js +++ b/web/pgadmin/misc/file_manager/static/js/utility.js @@ -52,6 +52,18 @@ define([ }); }; + var getFileFormat = function(data) { + // Get last selected file format + return $.ajax({ + async: false, + cache: false, + url: url_for('settings.get_file_format_setting'), + data : $.extend({}, data), + dataType: 'json', + contentType: 'application/json; charset=utf-8', + }); + }; + // Set enable/disable state of list and grid view var setViewButtonsFor = function(viewMode) { if (viewMode == 'grid') { @@ -1330,18 +1342,22 @@ define([ if (types_len > 0) { var i = 0, t, - selected = false, have_all_types = false; let fileFormats = ''; + let response = getFileFormat(config.options.allowed_file_types); + let lastSelectedFormat = response.responseJSON.info; + while (i < types_len) { t = allowed_types[i]; - if (!selected && (types_len == 1 || t != '*')) { - fileFormats += '<option value=' + t + ' selected>' + t + '</option>'; - selected = true; + if ((types_len == 1 || t != '*')) { + if(t === lastSelectedFormat) + fileFormats += '<option value=' + t + ' selected >' + t + '</option>'; + else + fileFormats += '<option value=' + t + ' >' + t + '</option>'; have_all_types = (have_all_types || (t == '*')); - } else { - fileFormats += '<option value="' + t + '">' + + } else if ((lastSelectedFormat === '*')) { + fileFormats += '<option value="' + t + '" selected >' + (t == '*' ? gettext('All Files') : t) + '</option>'; have_all_types = (have_all_types || (t == '*')); } @@ -1370,6 +1386,13 @@ define([ curr_path = $('.currentpath').val(), user_input_file = null, input_path = $('.storage_dialog #uploader .input-path').val(); + config.options.selectedFormat = selected_val; + $.ajax({ + url: url_for('settings.save_file_format_setting'), + type: 'POST', + contentType: 'application/json', + data: JSON.stringify(config.options), + }); if (curr_path.endsWith('/')) { user_input_file = input_path.substring(curr_path.lastIndexOf('/')+1); } else { @@ -1928,10 +1951,15 @@ define([ getDetailView: function(path) { if (path.lastIndexOf('/') == path.length - 1 || path.lastIndexOf('\\') == path.length - 1) { var allowed_types = this.config.options.allowed_file_types; - var set_type = allowed_types[0]; - if (allowed_types[0] == '*') { - set_type = allowed_types[1]; - } + + let set_type; + + let response = getFileFormat(this.config.options.allowed_file_types); + let lastSelectedFormat = response.responseJSON.info; + if (_.isUndefined(lastSelectedFormat)) + set_type = allowed_types[0]; + else + set_type = lastSelectedFormat; getFolderInfo(path, set_type); } }, diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py index c49feea41..9723f9af9 100644 --- a/web/pgadmin/settings/__init__.py +++ b/web/pgadmin/settings/__init__.py @@ -57,7 +57,9 @@ class SettingsModule(PgAdminModule): return [ 'settings.store', 'settings.store_bulk', 'settings.reset_layout', 'settings.save_tree_state', 'settings.get_tree_state', - 'settings.reset_tree_state' + 'settings.reset_tree_state', + 'settings.save_file_format_setting', + 'settings.get_file_format_setting' ] @@ -218,3 +220,66 @@ def get_browser_tree_state(): return Response(response=data, status=200, mimetype="application/json") + + +def _get_dialog_type(file_type): + """ + This function return dialog type + :param file_type: + :return: dialog type. + """ + if 'pgerd' in file_type: + return 'erd_file_type' + elif 'backup' in file_type: + return 'backup_file_type' + elif 'csv' in file_type and 'txt' in file_type: + return 'import_export_file_type' + elif 'csv' in file_type and 'txt' not in file_type: + return 'storage_manager_file_type' + else: + return 'sqleditor_file_format' + + +@blueprint.route("/save_file_format_setting/", + endpoint="save_file_format_setting", + methods=['POST']) +@login_required +def save_file_format_setting(): + """ + This function save the selected file format. + :return: save file format response + """ + data = request.form if request.form else json.loads( + request.data.decode('utf-8')) + file_type = _get_dialog_type(data['allowed_file_types']) + + store_setting(file_type, data['selectedFormat']) + return make_json_response(success=True, + info=data, + result=request.form) + + +@blueprint.route("/get_file_format_setting/", + endpoint="get_file_format_setting", + methods=['GET']) +@login_required +def get_file_format_setting(): + """ + This function return the last selected file format + :return: last selected file format + """ + data = dict() + for k, v in request.args.items(): + try: + data[k] = json.loads(v, encoding='utf-8') + except ValueError: + data[k] = v + + file_type = _get_dialog_type(list(data.values())) + + data = Setting.query.filter_by( + user_id=current_user.id, setting=file_type).first() + if data is None: + return make_json_response(success=True, info='*') + else: + return make_json_response(success=True, info=data.value)