lol

python3Packages.flask-appbuilder: 3.3.0 -> 3.3.1

+58 -13
+13 -13
pkgs/development/python-modules/flask-appbuilder/default.nix
··· 5 5 , colorama 6 6 , click 7 7 , email_validator 8 - , fetchpatch 9 8 , flask 10 9 , flask-babel 11 10 , flask_login ··· 26 25 27 26 buildPythonPackage rec { 28 27 pname = "flask-appbuilder"; 29 - version = "3.3.0"; 28 + version = "3.3.1"; 30 29 31 30 src = fetchPypi { 32 31 pname = "Flask-AppBuilder"; 33 32 inherit version; 34 - sha256 = "00dsfv1apl6483wy20aj91f9h5ak2casbx5vcajv2nd3i7c7v8gx"; 33 + sha256 = "13rlpdf3ipm39zpc62sywn8qjn6gwfbgr43x7lqpxr28br2jcg3j"; 35 34 }; 36 35 37 - patches = [ 38 - # https://github.com/dpgaspar/Flask-AppBuilder/pull/1610 39 - (fetchpatch { 40 - name = "flask_jwt_extended-and-pyjwt-patch"; 41 - url = "https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch"; 42 - sha256 = "sha256-ZpY8+2Hoz3z01GVtw2OIbQcsmAwa7iwilFWzgcGhY1w="; 43 - includes = [ "flask_appbuilder/security/manager.py" "setup.py" ]; 44 - }) 45 - ]; 36 + # See here: https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch 37 + # https://github.com/dpgaspar/Flask-AppBuilder/pull/1610 38 + # The patch from the PR doesn't apply cleanly so I edited it manually. 39 + patches = [ ./upgrade-to-flask_jwt_extended-4.patch ]; 46 40 47 41 propagatedBuildInputs = [ 48 42 apispec ··· 70 64 postPatch = '' 71 65 substituteInPlace setup.py \ 72 66 --replace "apispec[yaml]>=3.3, <4" "apispec[yaml] >=3.3, <5" \ 67 + --replace "click>=6.7, <8" "click" \ 68 + --replace "Flask>=0.12, <2" "Flask" \ 73 69 --replace "Flask-Login>=0.3, <0.5" "Flask-Login >=0.3, <0.6" \ 74 70 --replace "Flask-Babel>=1, <2" "Flask-Babel >=1, <3" \ 75 - --replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy >=0.22.0, <0.25.0" 71 + --replace "Flask-WTF>=0.14.2, <0.15.0" "Flask-WTF" \ 72 + --replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy" \ 73 + --replace "Flask-JWT-Extended>=3.18, <4" "Flask-JWT-Extended>=4.1.0" \ 74 + --replace "PyJWT>=1.7.1, <2.0.0" "PyJWT>=2.0.1" \ 75 + --replace "SQLAlchemy<1.4.0" "SQLAlchemy" 76 76 ''; 77 77 78 78 # Majority of tests require network access or mongo
+45
pkgs/development/python-modules/flask-appbuilder/upgrade-to-flask_jwt_extended-4.patch
··· 1 + diff --git a/flask_appbuilder/security/api.py b/flask_appbuilder/security/api.py 2 + index 2e2dfd612..df1bd5a25 100644 3 + --- a/flask_appbuilder/security/api.py 4 + +++ b/flask_appbuilder/security/api.py 5 + @@ -3,7 +3,7 @@ 6 + create_access_token, 7 + create_refresh_token, 8 + get_jwt_identity, 9 + - jwt_refresh_token_required, 10 + + jwt_required, 11 + ) 12 + 13 + from ..api import BaseApi, safe 14 + @@ -118,7 +118,7 @@ def login(self): 15 + return self.response(200, **resp) 16 + 17 + @expose("/refresh", methods=["POST"]) 18 + - @jwt_refresh_token_required 19 + + @jwt_required(refresh=True) 20 + @safe 21 + def refresh(self): 22 + """ 23 + diff --git a/flask_appbuilder/security/manager.py b/flask_appbuilder/security/manager.py 24 + index fe7697007..3b22ab255 100644 25 + --- a/flask_appbuilder/security/manager.py 26 + +++ b/flask_appbuilder/security/manager.py 27 + @@ -297,7 +297,7 @@ def create_jwt_manager(self, app) -> JWTManager: 28 + """ 29 + jwt_manager = JWTManager() 30 + jwt_manager.init_app(app) 31 + - jwt_manager.user_loader_callback_loader(self.load_user_jwt) 32 + + jwt_manager.user_lookup_loader(self.load_user_jwt) 33 + return jwt_manager 34 + 35 + def create_builtin_roles(self): 36 + @@ -1944,7 +1944,8 @@ def del_permission_role(self, role, perm_view): 37 + def load_user(self, pk): 38 + return self.get_user_by_id(int(pk)) 39 + 40 + - def load_user_jwt(self, pk): 41 + + def load_user_jwt(self, _jwt_header, jwt_data): 42 + + pk = jwt_data["sub"] 43 + user = self.load_user(pk) 44 + # Set flask g.user to JWT user, we can't do it on before request 45 + g.user = user