From d0e0b48df42277d8b48ae94ee1af43f87752046a Mon Sep 17 00:00:00 2001
From: Mark <mark@openappstack.net>
Date: Mon, 9 Sep 2019 18:41:51 +0200
Subject: [PATCH] Refactor db user store object creation

---
 app.py               | 10 ++++------
 database/database.py |  8 ++++++++
 database/schema.py   |  3 ++-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/app.py b/app.py
index 2f93e11..e4750d3 100644
--- a/app.py
+++ b/app.py
@@ -1,13 +1,12 @@
 from flask import Flask
-from flask_security import Security, login_required, \
-     SQLAlchemySessionUserDatastore
+from flask_security import Security, login_required
 from flask_graphql import GraphQLView
 
 from os import environ
 
-from database.database import db_session, init_db
+from database.database import db_session, init_db, get_user_datastore
 from database.schema import schema
-from database.models import User, Role
+from database.models import User
 
 app = Flask(__name__)
 
@@ -22,8 +21,7 @@ app.add_url_rule(
     )
 )
 
-user_datastore = SQLAlchemySessionUserDatastore(db_session,
-                                                User, Role)
+user_datastore = get_user_datastore()
 
 @app.teardown_appcontext
 def shutdown_session(exception=None):
diff --git a/database/database.py b/database/database.py
index c6bc09d..ca47e34 100644
--- a/database/database.py
+++ b/database/database.py
@@ -1,4 +1,5 @@
 from sqlalchemy import create_engine
+from flask_security import SQLAlchemySessionUserDatastore
 from os import environ
 from sqlalchemy.orm import scoped_session, sessionmaker
 from sqlalchemy.ext.declarative import declarative_base
@@ -21,6 +22,13 @@ db_session = scoped_session(sessionmaker(autocommit=False,
 
 Base.query = db_session.query_property()
 
+def get_user_datastore():
+    from database.models import Role, User
+    return SQLAlchemySessionUserDatastore(
+        db_session,
+        User,
+        Role)
+
 def init_db(engine=engine):
     # import all modules here that might define models so that
     # they will be registered properly on the metadata.  Otherwise
diff --git a/database/schema.py b/database/schema.py
index c5f90de..eca2ecd 100644
--- a/database/schema.py
+++ b/database/schema.py
@@ -2,8 +2,9 @@ import graphene
 from graphene import relay
 from graphene_sqlalchemy import SQLAlchemyObjectType, SQLAlchemyConnectionField
 from database.models import User as UserModel, Application as ApplicationModel, Role as RoleModel
-from database.database import scoped_session
+from database.database import db_session, get_user_datastore
 
+user_datastore = get_user_datastore()
 
 class User(SQLAlchemyObjectType):
     class Meta:
-- 
GitLab