1

I'm creating a module in Flask where in I can upload a Profile picture. I used Flask uploads for this. However, I'm having problems in how to initialize my Storage.

Here's what I did:

from flask.ext.bootstrap import Bootstrap
from flask.ext.mail import Mail
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from config import config
from flask.ext.storage import get_default_storage_class
from flask.ext.uploads import init


bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
Storage = get_default_storage_class()

login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'


def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    Storage.init_app(app)
    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint, url_prefix='/auth')

    return app

P.S: init_app is a function from my config.py file. The code of my config.py is written below.

That's what I want to happen, however I get an error. It states that I need a parameter for the get_default_storage_class. So my common sense emerges, and did this:

bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'


def create_app(config_name):
    #...
    Storage = get_default_storage_class(app)

It worked without errors, but when I try to import Storage in my views.py file. Here's what I did:

from .. import db, Storage

And then, I got an error again. Which states that I can't import Storage.

Anyway, here's my config.py:

Class Config:
#..
#initialization stuff

@staticmethod
    def init_app(app):
        pass

Here's the traceback:

(venv) C:\Users\LouieCubero\Documents\GitHub\flasky3>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 7, in <module>
    app=create_app(os.getenv('FLASK_CONFIG') or 'default')
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\__init__.py", line 36,
 in create_app
    from .main import main as main_blueprint
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\main\__init__.py", lin
e 5, in <module>
    from . import views, errors
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\main\views.py", line 5
, in <module>
    from .. import db, Storage
ImportError: cannot import name Storage
Jeff Widman
  • 22,014
  • 12
  • 72
  • 88
Louie Cubero
  • 329
  • 1
  • 3
  • 11

0 Answers0