tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
python3Packages.flask-appbuilder: 3.3.0 -> 3.3.1
Ivan Tkachev
4 years ago
a3510b8e
e6a4acc6
+58
-13
2 changed files
expand all
collapse all
unified
split
pkgs
development
python-modules
flask-appbuilder
default.nix
upgrade-to-flask_jwt_extended-4.patch
+13
-13
pkgs/development/python-modules/flask-appbuilder/default.nix
···
5
5
, colorama
6
6
, click
7
7
, email_validator
8
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
29
-
version = "3.3.0";
28
28
+
version = "3.3.1";
30
29
31
30
src = fetchPypi {
32
31
pname = "Flask-AppBuilder";
33
32
inherit version;
34
34
-
sha256 = "00dsfv1apl6483wy20aj91f9h5ak2casbx5vcajv2nd3i7c7v8gx";
33
33
+
sha256 = "13rlpdf3ipm39zpc62sywn8qjn6gwfbgr43x7lqpxr28br2jcg3j";
35
34
};
36
35
37
37
-
patches = [
38
38
-
# https://github.com/dpgaspar/Flask-AppBuilder/pull/1610
39
39
-
(fetchpatch {
40
40
-
name = "flask_jwt_extended-and-pyjwt-patch";
41
41
-
url = "https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch";
42
42
-
sha256 = "sha256-ZpY8+2Hoz3z01GVtw2OIbQcsmAwa7iwilFWzgcGhY1w=";
43
43
-
includes = [ "flask_appbuilder/security/manager.py" "setup.py" ];
44
44
-
})
45
45
-
];
36
36
+
# See here: https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch
37
37
+
# https://github.com/dpgaspar/Flask-AppBuilder/pull/1610
38
38
+
# The patch from the PR doesn't apply cleanly so I edited it manually.
39
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
67
+
--replace "click>=6.7, <8" "click" \
68
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
75
-
--replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy >=0.22.0, <0.25.0"
71
71
+
--replace "Flask-WTF>=0.14.2, <0.15.0" "Flask-WTF" \
72
72
+
--replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy" \
73
73
+
--replace "Flask-JWT-Extended>=3.18, <4" "Flask-JWT-Extended>=4.1.0" \
74
74
+
--replace "PyJWT>=1.7.1, <2.0.0" "PyJWT>=2.0.1" \
75
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
1
+
diff --git a/flask_appbuilder/security/api.py b/flask_appbuilder/security/api.py
2
2
+
index 2e2dfd612..df1bd5a25 100644
3
3
+
--- a/flask_appbuilder/security/api.py
4
4
+
+++ b/flask_appbuilder/security/api.py
5
5
+
@@ -3,7 +3,7 @@
6
6
+
create_access_token,
7
7
+
create_refresh_token,
8
8
+
get_jwt_identity,
9
9
+
- jwt_refresh_token_required,
10
10
+
+ jwt_required,
11
11
+
)
12
12
+
13
13
+
from ..api import BaseApi, safe
14
14
+
@@ -118,7 +118,7 @@ def login(self):
15
15
+
return self.response(200, **resp)
16
16
+
17
17
+
@expose("/refresh", methods=["POST"])
18
18
+
- @jwt_refresh_token_required
19
19
+
+ @jwt_required(refresh=True)
20
20
+
@safe
21
21
+
def refresh(self):
22
22
+
"""
23
23
+
diff --git a/flask_appbuilder/security/manager.py b/flask_appbuilder/security/manager.py
24
24
+
index fe7697007..3b22ab255 100644
25
25
+
--- a/flask_appbuilder/security/manager.py
26
26
+
+++ b/flask_appbuilder/security/manager.py
27
27
+
@@ -297,7 +297,7 @@ def create_jwt_manager(self, app) -> JWTManager:
28
28
+
"""
29
29
+
jwt_manager = JWTManager()
30
30
+
jwt_manager.init_app(app)
31
31
+
- jwt_manager.user_loader_callback_loader(self.load_user_jwt)
32
32
+
+ jwt_manager.user_lookup_loader(self.load_user_jwt)
33
33
+
return jwt_manager
34
34
+
35
35
+
def create_builtin_roles(self):
36
36
+
@@ -1944,7 +1944,8 @@ def del_permission_role(self, role, perm_view):
37
37
+
def load_user(self, pk):
38
38
+
return self.get_user_by_id(int(pk))
39
39
+
40
40
+
- def load_user_jwt(self, pk):
41
41
+
+ def load_user_jwt(self, _jwt_header, jwt_data):
42
42
+
+ pk = jwt_data["sub"]
43
43
+
user = self.load_user(pk)
44
44
+
# Set flask g.user to JWT user, we can't do it on before request
45
45
+
g.user = user