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..b726a3eb3b94 100644 --- a/nixos/tests/pgadmin4.nix +++ b/nixos/tests/pgadmin4.nix @@ -55,6 +55,11 @@ 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("restart 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/development/python-modules/flask-security-too/default.nix b/pkgs/development/python-modules/flask-security-too/default.nix index b8f375dbcf09..9fab0385e463 100644 --- a/pkgs/development/python-modules/flask-security-too/default.nix +++ b/pkgs/development/python-modules/flask-security-too/default.nix @@ -3,7 +3,7 @@ , fetchPypi , pythonOlder , setuptools -, pydantic +, fetchpatch # extras: babel , babel @@ -59,6 +59,16 @@ buildPythonPackage rec { hash = "sha256-we2TquU28qP/ir4eE67J0Nlft/8IL8w7Ny3ypSE5cNk="; }; + patches = [ + # https://github.com/Flask-Middleware/flask-security/pull/901 + (fetchpatch { + name = "fixes-for-py_webauthn-2.0.patch"; + url = "https://github.com/Flask-Middleware/flask-security/commit/5725f7021343567ec0b25c890e859f4e84c93ba6.patch"; + hash = "sha256-4EgwT4zRj0mh4ZaoZFz7H5KeiZ9zs+BY4siYm8DwMfU="; + excludes = [ "CHANGES.rst" ]; + }) + ]; + nativeBuildInputs = [ setuptools ]; @@ -128,7 +138,5 @@ buildPythonPackage rec { description = "Simple security for Flask apps (fork)"; license = licenses.mit; maintainers = with maintainers; [ gador ]; - # https://github.com/Flask-Middleware/flask-security/pull/851 - broken = versionAtLeast pydantic.version "2"; }; } diff --git a/pkgs/development/python-modules/webauthn/default.nix b/pkgs/development/python-modules/webauthn/default.nix index 257649a9db0f..ad28892290ee 100644 --- a/pkgs/development/python-modules/webauthn/default.nix +++ b/pkgs/development/python-modules/webauthn/default.nix @@ -4,29 +4,27 @@ , asn1crypto , cbor2 , pythonOlder -, pydantic , pyopenssl , pytestCheckHook }: buildPythonPackage rec { pname = "webauthn"; - version = "1.11.1"; + version = "2.0.0"; format = "setuptools"; - disabled = pythonOlder "3.7"; + disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "duo-labs"; repo = "py_webauthn"; rev = "refs/tags/v${version}"; - hash = "sha256-+pp21rtwavtjj6ahG091xsJpsYOH3zpqU3xH2/YFXqY="; + hash = "sha256-StqoSrzErV13/OUpSWbI+6N5tSFPEpvnmQcDiZMaXPI="; }; propagatedBuildInputs = [ asn1crypto cbor2 - pydantic pyopenssl ]; 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"