diff --git a/app.py b/app.py index 2f93e11c008ecd8d38753909bbf6e0655d8b4831..e4750d3404e92a6780a7ff721761ecefff236a5e 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 c6bc09d0e19ef86a094f293a97142ac93ce4f0b9..ca47e34440624574a64318639ce550d4ca5fc9b0 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 c5f90ded646c327f758c7734faac3ca0c364618a..eca2ecdea8ce2a9b4486c145dc2d1156ad7100c0 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: