diff --git a/nixos/modules/services/admin/pgadmin.nix b/nixos/modules/services/admin/pgadmin.nix
index ceb5655dc562..20b6b6670d9c 100644
--- a/nixos/modules/services/admin/pgadmin.nix
+++ b/nixos/modules/services/admin/pgadmin.nix
@@ -168,7 +168,7 @@ in
echo "$PW"
# Retype password:
echo "$PW"
- ) | ${cfg.package}/bin/pgadmin4-setup
+ ) | ${cfg.package}/bin/pgadmin4-cli setup-db
'';
restartTriggers = [
diff --git a/nixos/tests/pgadmin4.nix b/nixos/tests/pgadmin4.nix
index 407e4592ef5f..bde9afbe6cd9 100644
--- a/nixos/tests/pgadmin4.nix
+++ b/nixos/tests/pgadmin4.nix
@@ -55,6 +55,12 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
machine.wait_until_succeeds("curl -sS localhost:5051/login | grep \"
pgAdmin 4\" > /dev/null")
# check for missing support files (css, js etc). Should catch not-generated files during build. See e.g. https://github.com/NixOS/nixpkgs/pull/229184
machine.succeed("wget -nv --level=1 --spider --recursive localhost:5051/login")
+ # test idempotenceny
+ machine.systemctl("stop pgadmin.service")
+ machine.systemctl("start pgadmin.service")
+ machine.wait_for_unit("pgadmin")
+ machine.wait_until_succeeds("curl -sS localhost:5051")
+ machine.wait_until_succeeds("curl -sS localhost:5051/login | grep \"pgAdmin 4\" > /dev/null")
# pgadmin4 module saves the configuration to /etc/pgadmin/config_system.py
# pgadmin4-desktopmode tries to read that as well. This normally fails with a PermissionError, as the config file
diff --git a/pkgs/tools/admin/pgadmin/default.nix b/pkgs/tools/admin/pgadmin/default.nix
index 0a7f90dd662a..d6f3b7551f9a 100644
--- a/pkgs/tools/admin/pgadmin/default.nix
+++ b/pkgs/tools/admin/pgadmin/default.nix
@@ -14,14 +14,14 @@
let
pname = "pgadmin";
- version = "8.1";
- yarnHash = "sha256-KAiY5TX2O8mxP7PjIJstYEzCBbqDgT+CpEhreuAGW/U=";
+ version = "8.2";
+ yarnHash = "sha256-uMSgpkYoLD32VYDAkjywC9bZjm7UKA0hhwVNc/toEbA=";
src = fetchFromGitHub {
owner = "pgadmin-org";
repo = "pgadmin4";
rev = "REL-${lib.versions.major version}_${lib.versions.minor version}";
- hash = "sha256-zzS/fydNOXpIWdyLtWQhY+hVpneca+3wD88DmZEkS8s=";
+ hash = "sha256-RfpZXy265kwpMsWUBDVfbL/0eX0By79I4VNkG8zwVOs=";
};
# keep the scope, as it is used throughout the derivation and tests
@@ -181,6 +181,8 @@ pythonPackages.buildPythonApplication rec {
google-auth-oauthlib
google-api-python-client
keyring
+ typer
+ rich
];
passthru.tests = {
diff --git a/pkgs/tools/admin/pgadmin/expose-setup.py.patch b/pkgs/tools/admin/pgadmin/expose-setup.py.patch
index ac68eabd411d..67e588c5be83 100644
--- a/pkgs/tools/admin/pgadmin/expose-setup.py.patch
+++ b/pkgs/tools/admin/pgadmin/expose-setup.py.patch
@@ -1,64 +1,16 @@
- pkg/pip/setup_pip.py | 5 ++++-
- web/setup.py | 14 ++++++++------
- 2 files changed, 12 insertions(+), 7 deletions(-)
-
diff --git a/pkg/pip/setup_pip.py b/pkg/pip/setup_pip.py
-index 5592d1b04..131eaa1ed 100644
+index c65795b10..e56b6a6f3 100644
--- a/pkg/pip/setup_pip.py
+++ b/pkg/pip/setup_pip.py
-@@ -95,7 +95,10 @@ setup(
- },
-
+@@ -101,7 +101,7 @@ setup(
+
entry_points={
-- 'console_scripts': ['pgadmin4=pgadmin4.pgAdmin4:main'],
-+ 'console_scripts': [
-+ 'pgadmin4=pgadmin4.pgAdmin4:main',
-+ 'pgadmin4-setup=pgadmin4.setup:main'
-+ ],
+ 'console_scripts': ['pgadmin4=pgadmin4.pgAdmin4:main',
+- 'pgadmin4-cli=pgadmin4.setup:main'],
++ 'pgadmin4-cli=pgadmin4.setup:app'],
},
-
+
)
-diff --git a/web/setup.py b/web/setup.py
-index 2204ffb..d5fda9f 100644
---- a/web/setup.py
-+++ b/web/setup.py
-@@ -14,7 +14,6 @@ import argparse
- import os
- import sys
- import builtins
--import config
-
- # Grab the SERVER_MODE if it's been set by the runtime
- if 'SERVER_MODE' in globals():
-@@ -91,6 +90,9 @@ def load_servers(args):
- def setup_db(app):
- """Setup the configuration database."""
-
-+ # here we need an additional import, since the call to setup_db changed
-+ # https://redmine.postgresql.org/projects/pgadmin4/repository/2/revisions/3a69d50458f57d19948b867aec55c55d635a36e5/diff/web/setup.py
-+ import config
- create_app_data_directory(config)
-
- print("pgAdmin 4 - Application Initialisation")
-@@ -139,8 +141,9 @@ def clear_servers():
- clear_database_servers(load_user, True)
-
-
--if __name__ == '__main__':
-+def main():
- # Configuration settings
-+ import config
- parser = argparse.ArgumentParser(description='Setup the pgAdmin config DB')
-
- exp_group = parser.add_argument_group('Dump server config')
-@@ -191,3 +194,6 @@ if __name__ == '__main__':
- else:
- app = create_app()
- setup_db(app)
-+
-+if __name__ == '__main__':
-+ main()
-
diff --git a/web/pgadmin/model/__init__.py b/web/pgadmin/model/__init__.py
index 4c36dd1..a492365 100644
--- a/web/pgadmin/model/__init__.py
diff --git a/pkgs/tools/admin/pgadmin/yarn.lock b/pkgs/tools/admin/pgadmin/yarn.lock
index abf896fa9891..cf3e188e8674 100644
--- a/pkgs/tools/admin/pgadmin/yarn.lock
+++ b/pkgs/tools/admin/pgadmin/yarn.lock
@@ -12716,3 +12716,8 @@ zustand@^4.4.1:
resolved "https://github.com/pgadmin-org/react-data-grid.git#200d2f5e02de694e3e9ffbe177c279bc40240fb8"
dependencies:
"clsx" "^1.1.1"
+"react-data-grid@https://github.com/pgadmin-org/react-data-grid.git#200d2f5e02de694e3e9ffbe177c279bc40240fb8":
+ version "7.0.0-beta.14"
+ resolved "https://github.com/pgadmin-org/react-data-grid.git#200d2f5e02de694e3e9ffbe177c279bc40240fb8"
+ dependencies:
+ "clsx" "^1.1.1"