public inbox for [email protected]  
help / color / mirror / Atom feed
From: Aditya Toshniwal <[email protected]>
To: Akshay Joshi <[email protected]>
Cc: Dave Page <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: [pgAdmin4][RM3849] Ask to save unsaved query changes stopped working
Date: Wed, 23 Jan 2019 11:32:02 +0530
Message-ID: <CAM9w-_==_XzpT+JtUQueqaNJK-TJa-XEZy__6mA2z0YnrzLErw@mail.gmail.com> (raw)
In-Reply-To: <CANxoLDe4JxW=CH5_4T4cJGin0b74n=Yet3KSmrx1SCh=bhfaHA@mail.gmail.com>
References: <CAM9w-_m7Z8tj4VFySfyqj1F+ZEAgd4dnYTjTND4jY8YQEwXovQ@mail.gmail.com>
	<CANxoLDciA484H5RMwbL3Nn+PudGFYxa_jjRnQnXsmYoPeOKxQw@mail.gmail.com>
	<CA+OCxoygmKZnqhr-J9FmW0BaNgpB3T1Yr+j0OC46GDLXu2yGnw@mail.gmail.com>
	<CAM9w-_mZ6auyK+QkvU-Ti+QW-yytMXU5Mq0gz_Ld9PpPxOvTGA@mail.gmail.com>
	<CA+OCxoz52Gfzt_pAD8dAPTr5X+NtJA87FSgO2M90WAb__eS9Lw@mail.gmail.com>
	<CAM9w-_m+A_EJ-za9b-Fr-Y=Vbv4prWRYMEyB+N4tt7xhuiDGbA@mail.gmail.com>
	<CA+OCxoxbTp=niVEJown-P=Jk+m=AqETSUEkurdPYntXUg7CSpA@mail.gmail.com>
	<CAM9w-_k-q1xJukuacMfUuonXombTqgNSFv+DqBDUMo9EGde35w@mail.gmail.com>
	<CANxoLDe4JxW=CH5_4T4cJGin0b74n=Yet3KSmrx1SCh=bhfaHA@mail.gmail.com>

Hi Hackers,

PFA revised patch as per review.

On Wed, Jan 23, 2019 at 11:20 AM Akshay Joshi <[email protected]>
wrote:

> Hi Aditya
>
> Found one issue you have remove the function "*disable_tree_state_save*" from
> "*web/regression/python_test_utils/test_utils.py*" and move that code
> into "*set_preference*" function and it is called from "
> *web/regression/runtests.py*" which is conditional, so please correct
> that behaviour.
>
> On Tue, Jan 22, 2019 at 6:28 PM Aditya Toshniwal <
> [email protected]> wrote:
>
>> Hi Hackers,
>>
>> Attached is the revised patch. The warning occurrence is configurable
>> from Preferences > Browser > Display.
>>
>> Kindly review.
>>
>> On Tue, Jan 22, 2019 at 5:38 PM Dave Page <[email protected]>
>> wrote:
>>
>>> On Tue, Jan 22, 2019 at 12:01 PM Aditya Toshniwal
>>> <[email protected]> wrote:
>>> >
>>> >
>>> >
>>> > On Tue, Jan 22, 2019 at 5:27 PM Dave Page <[email protected]>
>>> wrote:
>>> >>
>>> >> On Tue, Jan 22, 2019 at 11:54 AM Aditya Toshniwal
>>> >> <[email protected]> wrote:
>>> >> >
>>> >> > Any suggestions on preferences name/desc ?
>>> >>
>>> >> Name: "Confirm on close"
>>> >> Desc: "Confirm closure of the browser or browser tab is intended
>>> >> before proceeding."
>>> >
>>> > It also warns on refresh.
>>>
>>> Name: "Confirm on close or refresh"
>>> Desc: "Confirm closure or refresh of the browser or browser tab is
>>> intended before proceeding."
>>>
>>> >>
>>> >>
>>> >>
>>> >> > On Tue, Jan 22, 2019 at 3:01 PM Dave Page <
>>> [email protected]> wrote:
>>> >> >>
>>> >> >> Hi
>>> >> >>
>>> >> >> On Tue, Jan 22, 2019 at 6:27 AM Akshay Joshi
>>> >> >> <[email protected]> wrote:
>>> >> >> >
>>> >> >> > Hi Aditya
>>> >> >> >
>>> >> >> > Below are my review comments:
>>> >> >> >
>>> >> >> > You have added new config parameter
>>> "DISABLE_BEFOREUNLOAD_MESSAGE" to make this request configurable, should it
>>> be the part of preferences setting instead of configuration? @Dave can you
>>> please comment on this.
>>> >> >>
>>> >> >> That does seem like something that should be a per-user preference,
>>> >> >> not a global config option.
>>> >> >>
>>> >> >> > Name "DISABLE_BEFOREUNLOAD_MESSAGE" is not clear as users
>>> perspective, can you please change it to some meaningful name.
>>> >> >> >
>>> >> >> > Apart from that code looks good to me.
>>> >> >> >
>>> >> >> > On Mon, Jan 21, 2019 at 1:24 PM Aditya Toshniwal <
>>> [email protected]> wrote:
>>> >> >> >>
>>> >> >> >> Hi Hackers,
>>> >> >> >>
>>> >> >> >> Attached is the patch to throw alert warning when user reloads
>>> or closes the browser.
>>> >> >> >>
>>> >> >> >> Kindly review.
>>> >> >> >>
>>> >> >> >> --
>>> >> >> >> Thanks and Regards,
>>> >> >> >> Aditya Toshniwal
>>> >> >> >> Software Engineer | EnterpriseDB Software Solutions | Pune
>>> >> >> >> "Don't Complain about Heat, Plant a tree"
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > --
>>> >> >> > Akshay Joshi
>>> >> >> > Sr. Software Architect
>>> >> >> >
>>> >> >> >
>>> >> >> > Phone: +91 20-3058-9517
>>> >> >> > Mobile: +91 976-788-8246
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> Dave Page
>>> >> >> VP, Chief Architect, Tools & Installers
>>> >> >> EnterpriseDB: http://www.enterprisedb.com
>>> >> >> The Enterprise PostgreSQL Company
>>> >> >>
>>> >> >> Blog: http://pgsnake.blogspot.com
>>> >> >> Twitter: @pgsnake
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Thanks and Regards,
>>> >> > Aditya Toshniwal
>>> >> > Software Engineer | EnterpriseDB Software Solutions | Pune
>>> >> > "Don't Complain about Heat, Plant a tree"
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Dave Page
>>> >> VP, Chief Architect, Tools & Installers
>>> >> EnterpriseDB: http://www.enterprisedb.com
>>> >> The Enterprise PostgreSQL Company
>>> >>
>>> >> Blog: http://pgsnake.blogspot.com
>>> >> Twitter: @pgsnake
>>> >
>>> >
>>> >
>>> > --
>>> > Thanks and Regards,
>>> > Aditya Toshniwal
>>> > Software Engineer | EnterpriseDB Software Solutions | Pune
>>> > "Don't Complain about Heat, Plant a tree"
>>>
>>>
>>>
>>> --
>>> Dave Page
>>> VP, Chief Architect, Tools & Installers
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>
>>
>> --
>> Thanks and Regards,
>> Aditya Toshniwal
>> Software Engineer | EnterpriseDB Software Solutions | Pune
>> "Don't Complain about Heat, Plant a tree"
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>


-- 
Thanks and Regards,
Aditya Toshniwal
Software Engineer | EnterpriseDB Software Solutions | Pune
"Don't Complain about Heat, Plant a tree"


Attachments:

  [application/octet-stream] RM3849_v3.patch (7.0K, 3-RM3849_v3.patch)
  download | inline diff:
diff --git a/web/pgadmin/browser/register_browser_preferences.py b/web/pgadmin/browser/register_browser_preferences.py
index 5bee817e..c7ea8126 100644
--- a/web/pgadmin/browser/register_browser_preferences.py
+++ b/web/pgadmin/browser/register_browser_preferences.py
@@ -38,6 +38,16 @@ def register_browser_preferences(self):
         )
     )
 
+    self.preference.register(
+        'display', 'confirm_on_refresh_close',
+        gettext("Confirm on close or refresh ?"), 'boolean',
+        True, category_label=gettext('Display'),
+        help_str=gettext(
+            'Confirm closure or refresh of the browser or browser tab is '
+            'intended before proceeding.'
+        )
+    )
+
     self.table_row_count_threshold = self.preference.register(
         'properties', 'table_row_count_threshold',
         gettext("Count rows if estimated less than"), 'integer', 2000,
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index cc2ea056..2accd182 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -1991,10 +1991,18 @@ define('pgadmin.browser', [
     pgAdmin.Browser.editor_shortcut_keys.Tab = 'insertSoftTab';
   }
 
-  $(window).on('beforeunload', function() {
-    let pref = pgBrowser.get_preference('browser', 'browser_tree_state_save_interval');
-    if (!_.isUndefined(pref) && pref.value !== -1)
+  $(window).on('beforeunload', function(e) {
+    let tree_save_interval = pgBrowser.get_preference('browser', 'browser_tree_state_save_interval'),
+      confirm_on_refresh_close = pgBrowser.get_preference('browser', 'confirm_on_refresh_close');
+    if (!_.isUndefined(tree_save_interval) && tree_save_interval.value !== -1)
       pgAdmin.Browser.browserTreeState.save_state();
+
+    if(confirm_on_refresh_close.value) {
+      /* This message will not be displayed in Chrome, Firefox, Safari as they have disabled it*/
+      let msg = S(gettext('Are you sure you want to close the %s browser?')).sprintf(pgBrowser.utils.app_name).value();
+      e.originalEvent.returnValue = msg;
+      return msg;
+    }
   });
 
   return pgAdmin.Browser;
diff --git a/web/regression/python_test_utils/test_utils.py b/web/regression/python_test_utils/test_utils.py
index b75e18a0..7163192c 100644
--- a/web/regression/python_test_utils/test_utils.py
+++ b/web/regression/python_test_utils/test_utils.py
@@ -646,58 +646,77 @@ def get_db_server(sid):
     return connection
 
 
-def set_preference(default_binary_path):
+def configure_preferences(default_binary_path=None):
     conn = sqlite3.connect(config.TEST_SQLITE_PATH)
     cur = conn.cursor()
-    perf = Preferences.module('paths')
-    server_types = default_binary_path.keys()
-
-    for server in server_types:
-        path_pref = perf.preference('{0}_bin_dir'.format(server))
-        user_pref = cur.execute(
-            'SELECT pid, uid FROM user_preferences '
-            'where pid=%s' % path_pref.pid
-        )
 
-        user_pref_data = user_pref.fetchone()
-        if user_pref_data:
-            cur.execute(
-                'UPDATE user_preferences SET value = ? WHERE pid = ?',
-                (default_binary_path[server], path_pref.pid)
-            )
-        else:
-            params = (path_pref.pid, 1, default_binary_path[server])
-            cur.execute(
-                'INSERT INTO user_preferences(pid, uid, value)'
-                ' VALUES (?,?,?)', params
+    if default_binary_path is not None:
+        paths_pref = Preferences.module('paths')
+        server_types = default_binary_path.keys()
+        for server in server_types:
+            pref_bin_path = paths_pref.preference('{0}_bin_dir'.format(server))
+            user_pref = cur.execute(
+                'SELECT pid, uid FROM user_preferences '
+                'where pid=%s' % pref_bin_path.pid
             )
 
-    conn.commit()
-    conn.close()
+            user_pref_data = user_pref.fetchone()
+            if user_pref_data:
+                cur.execute(
+                    'UPDATE user_preferences SET value = ? WHERE pid = ?',
+                    (default_binary_path[server], pref_bin_path.pid)
+                )
+            else:
+                params = (pref_bin_path.pid, 1, default_binary_path[server])
+                cur.execute(
+                    'INSERT INTO user_preferences(pid, uid, value)'
+                    ' VALUES (?,?,?)', params
+                )
 
+    browser_pref = Preferences.module('browser')
 
-def disable_tree_state_save():
-    conn = sqlite3.connect(config.TEST_SQLITE_PATH)
-    cur = conn.cursor()
-    pref = Preferences.module('browser')\
-        .preference('browser_tree_state_save_interval')
+    # Disable tree state save for tests
+    pref_tree_state_save_interval = \
+        browser_pref.preference('browser_tree_state_save_interval')
+
+    user_pref = cur.execute(
+        'SELECT pid, uid FROM user_preferences '
+        'where pid=?', (pref_tree_state_save_interval.pid,)
+    )
+
+    if len(user_pref.fetchall()) == 0:
+        cur.execute(
+            'INSERT INTO user_preferences(pid, uid, value)'
+            ' VALUES (?,?,?)', (pref_tree_state_save_interval.pid, 1, -1)
+        )
+    else:
+        cur.execute(
+            'UPDATE user_preferences'
+            ' SET VALUE = ?'
+            ' WHERE PID = ?', (-1, pref_tree_state_save_interval.pid)
+        )
+
+    # Disable reload warning on browser
+    pref_confirm_on_refresh_close = \
+        browser_pref.preference('confirm_on_refresh_close')
 
     user_pref = cur.execute(
         'SELECT pid, uid FROM user_preferences '
-        'where pid=?', (pref.pid,)
+        'where pid=?', (pref_confirm_on_refresh_close.pid,)
     )
 
     if len(user_pref.fetchall()) == 0:
         cur.execute(
             'INSERT INTO user_preferences(pid, uid, value)'
-            ' VALUES (?,?,?)', (pref.pid, 1, -1)
+            ' VALUES (?,?,?)', (pref_confirm_on_refresh_close.pid, 1, 'False')
         )
     else:
         cur.execute(
             'UPDATE user_preferences'
             ' SET VALUE = ?'
-            ' WHERE PID = ?', (-1, pref.pid)
+            ' WHERE PID = ?', ('False', pref_confirm_on_refresh_close.pid)
         )
+
     conn.commit()
     conn.close()
 
diff --git a/web/regression/runtests.py b/web/regression/runtests.py
index 0284753c..b023703d 100644
--- a/web/regression/runtests.py
+++ b/web/regression/runtests.py
@@ -415,12 +415,9 @@ if __name__ == '__main__':
             test_utils.drop_database(connection, test_db_name)
             # Create database
             test_utils.create_database(server, test_db_name)
-
-            if server['default_binary_paths'] is not None:
-                test_utils.set_preference(server['default_binary_paths'])
-
-            # Disable tree state saving
-            test_utils.disable_tree_state_save()
+            # Configure preferences for the test cases
+            test_utils.configure_preferences(
+                default_binary_path=server['default_binary_paths'])
 
             suite = get_suite(test_module_list,
                               server,


view thread (11+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: [pgAdmin4][RM3849] Ask to save unsaved query changes stopped working
  In-Reply-To: <CAM9w-_==_XzpT+JtUQueqaNJK-TJa-XEZy__6mA2z0YnrzLErw@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox