public inbox for [email protected]
help / color / mirror / Atom feedFrom: Alessandro De Maria <[email protected]>
To: Akshay Joshi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: Feature 6270: Allow for --load-servers to replace current server list
Date: Mon, 1 Mar 2021 11:12:40 +0000
Message-ID: <CAAivwfKkRbMuesLJnALGtJNLSZM=-OxgYZB87pebHrLzf2HYoQ@mail.gmail.com> (raw)
In-Reply-To: <CANxoLDcnAU67CQhdnQkAB4Bz-6MyH-M6U6LLL8TbLzTiWB1Ytw@mail.gmail.com>
References: <CAAivwfK6LAtYs1WsDBKmRvpzUFo_dPBWHCjNNtQBBAx0w0eSSg@mail.gmail.com>
<CANxoLDcnAU67CQhdnQkAB4Bz-6MyH-M6U6LLL8TbLzTiWB1Ytw@mail.gmail.com>
Hey Akshay,
Thank you for the suggestions, here are the patches.
Regards
Alessandro
On Fri, 26 Feb 2021 at 09:25, Akshay Joshi <[email protected]>
wrote:
> Hi Alessandro
>
> Patch looks good to me. Please fix the following issues:
>
> - Fix the PEP8 issue.
> - Documentation needs to be updated with this new flag. Please update
> "docs-> en_Us -> import_export_servers.rst" file.
>
>
> On Thu, Feb 25, 2021 at 10:06 PM Alessandro De Maria <
> [email protected]> wrote:
>
>> Hello,
>>
>> I have created a patch for the issue I raised earlier:
>>
>> https://redmine.postgresql.org/issues/6270
>>
>> I apologise I have never sent git patches before, and I could not find
>> any specific documentation of how you expect to receive contributions.
>>
>> Regards
>> Alessandro
>>
>> --
>> Alessandro De Maria
>> [email protected]
>>
>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
> *pgAdmin Hacker | Principal Software Architect*
> *EDB Postgres <http://edbpostgres.com>*
>
> *Mobile: +91 976-788-8246*
>
--
Alessandro De Maria
[email protected]
Attachments:
[application/octet-stream] 0002-Address-comments-on-pep8-and-documentation.patch (2.8K, 3-0002-Address-comments-on-pep8-and-documentation.patch)
download | inline diff:
From d462c833d2f3e664a7480363bae13e33a352cd0c Mon Sep 17 00:00:00 2001
From: Alessandro De Maria <[email protected]>
Date: Mon, 1 Mar 2021 11:09:39 +0000
Subject: [PATCH 2/2] Address comments on pep8 and documentation
---
docs/en_US/import_export_servers.rst | 3 +++
web/setup.py | 11 +++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/docs/en_US/import_export_servers.rst b/docs/en_US/import_export_servers.rst
index 1e05f9617b..175a544cf4 100644
--- a/docs/en_US/import_export_servers.rst
+++ b/docs/en_US/import_export_servers.rst
@@ -57,6 +57,9 @@ path) of the JSON file containing the server definitions. Servers will be owned
by the desktop mode user ([email protected] by default - see the DESKTOP_USER
setting in ``config.py``). This can be overridden with the ``--user`` command
line option. There can be multiple configuations of pgAdmin on the same system.
+The default behaviour is for the imported servers to be added to the existent list,
+which might lead to duplicates. This can be overridden with the ``--replace`` command
+line option, which will replace the list of servers with the newly imported one.
To load the servers into a specific pgAdmin config DB file, ``--sqlite-path`` option
can be used. It is also recommended to use this option when running pgAdmin in
desktop mode. By default SQLITE_PATH setting in ``config.py`` is taken. For example:
diff --git a/web/setup.py b/web/setup.py
index 86e61fc77b..37d8345f4f 100644
--- a/web/setup.py
+++ b/web/setup.py
@@ -10,6 +10,9 @@
"""Perform the initial setup of the application, by creating the auth
and settings database."""
+from pgadmin.model import db, User, Version, ServerGroup, Server, \
+ SCHEMA_VERSION as CURRENT_SCHEMA_VERSION
+from pgadmin import create_app
import argparse
import json
import os
@@ -28,10 +31,6 @@ root = os.path.dirname(os.path.realpath(__file__))
if sys.path[0] != root:
sys.path.insert(0, root)
-from pgadmin import create_app
-from pgadmin.model import db, User, Version, ServerGroup, Server, \
- SCHEMA_VERSION as CURRENT_SCHEMA_VERSION
-
def add_value(attr_dict, key, value):
"""Add a value to the attribute dict if non-empty.
@@ -397,6 +396,7 @@ def setup_db():
if os.name != 'nt':
os.chmod(config.SQLITE_PATH, 0o600)
+
def clear_servers():
"""Clear groups and servers configurations.
@@ -432,7 +432,7 @@ def clear_servers():
for group in groups:
db.session.delete(group)
servers = Server.query.filter_by(user_id=user_id)
-
+
for server in servers:
db.session.delete(server)
@@ -442,7 +442,6 @@ def clear_servers():
print("Error clearing server configuration")
-
if __name__ == '__main__':
# Configuration settings
import config
--
2.24.3 (Apple Git-128)
[application/octet-stream] 0001-6270-add-replace-flag.patch (2.8K, 4-0001-6270-add-replace-flag.patch)
download | inline diff:
From 8f610a8def97f4eeb8299508e168afcf313197f7 Mon Sep 17 00:00:00 2001
From: Alessandro De Maria <[email protected]>
Date: Thu, 25 Feb 2021 16:21:25 +0000
Subject: [PATCH 1/2] 6270: add --replace flag
---
web/setup.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/web/setup.py b/web/setup.py
index 20ce6563b3..86e61fc77b 100644
--- a/web/setup.py
+++ b/web/setup.py
@@ -397,6 +397,51 @@ def setup_db():
if os.name != 'nt':
os.chmod(config.SQLITE_PATH, 0o600)
+def clear_servers():
+ """Clear groups and servers configurations.
+
+ Args:
+ args (ArgParser): The parsed command line options
+ """
+
+ # What user?
+ load_user = args.user if args.user is not None else config.DESKTOP_USER
+
+ # And the sqlite path
+ if args.sqlite_path is not None:
+ config.SQLITE_PATH = args.sqlite_path
+
+ app = create_app(config.APP_NAME + '-cli')
+ with app.app_context():
+ user = User.query.filter_by(email=load_user).first()
+
+ if user is None:
+ print("The specified user ID (%s) could not be found." %
+ load_user)
+ sys.exit(1)
+
+ user_id = user.id
+
+ # Remove all servers
+ servers = Server.query.filter_by(user_id=user_id)
+ for server in servers:
+ db.session.delete(server)
+
+ # Remove all groups
+ groups = ServerGroup.query.filter_by(user_id=user_id)
+ for group in groups:
+ db.session.delete(group)
+ servers = Server.query.filter_by(user_id=user_id)
+
+ for server in servers:
+ db.session.delete(server)
+
+ try:
+ db.session.commit()
+ except Exception as e:
+ print("Error clearing server configuration")
+
+
if __name__ == '__main__':
# Configuration settings
@@ -415,7 +460,10 @@ if __name__ == '__main__':
imp_group = parser.add_argument_group('Load server config')
imp_group.add_argument('--load-servers', metavar="INPUT_FILE",
help='Load servers into the DB', required=False)
+ imp_group.add_argument('--replace', dest='replace', action='store_true',
+ help='replace server configurations', required=False)
+ imp_group.set_defaults(replace=False)
# Common args
parser.add_argument('--sqlite-path', metavar="PATH",
help='Dump/load with the specified pgAdmin config DB'
@@ -442,6 +490,8 @@ if __name__ == '__main__':
print(str(e))
elif args.load_servers is not None:
try:
+ if args.replace:
+ clear_servers()
load_servers(args)
except Exception as e:
print(str(e))
--
2.24.3 (Apple Git-128)
view thread (4+ 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: Feature 6270: Allow for --load-servers to replace current server list
In-Reply-To: <CAAivwfKkRbMuesLJnALGtJNLSZM=-OxgYZB87pebHrLzf2HYoQ@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