Skip to content

Commit cc0bee3

Browse files
committed
Merge pull request #150 from xen/master
Update Flask integration to most recent version
2 parents f1653d1 + f9321e3 commit cc0bee3

File tree

7 files changed

+33
-50
lines changed

7 files changed

+33
-50
lines changed

docs/configuration/flask.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ and the database are defined, call ``init_social`` to register the models::
3333

3434
from social.apps.flask_app.models import init_social
3535

36-
social_storage = init_social(app, db)
36+
init_social(app, db)
3737

3838
So far I wasn't able to find another way to define the models on another way
3939
rather than making it as a side-effect of calling this function since the

examples/flask_example/__init__.py

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
import sys
22

3-
from sqlalchemy import create_engine
4-
53
from flask import Flask, g
64
from flask.ext.sqlalchemy import SQLAlchemy
75
from flask.ext import login
86

9-
from sqlalchemy.orm import scoped_session, sessionmaker
10-
from sqlalchemy.ext.declarative import declarative_base
11-
12-
137
sys.path.append('../..')
148

159
from social.apps.flask_app.routes import social_auth
@@ -27,21 +21,13 @@
2721

2822
# DB
2923
db = SQLAlchemy(app)
30-
db.metadata.bind = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
31-
32-
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'],
33-
convert_unicode=True)
34-
session = scoped_session(sessionmaker(bind=engine))
35-
Base = declarative_base()
36-
Base.query = session.query_property()
37-
3824
app.register_blueprint(social_auth)
39-
social_storage = init_social(app, Base, session)
25+
init_social(app, db)
4026

4127
login_manager = login.LoginManager()
4228
login_manager.login_view = 'main'
4329
login_manager.login_message = ''
44-
login_manager.setup_app(app)
30+
login_manager.init_app(app)
4531

4632
from flask_example import models
4733
from flask_example import routes
@@ -63,12 +49,12 @@ def global_user():
6349
@app.teardown_appcontext
6450
def commit_on_success(error=None):
6551
if error is None:
66-
session.commit()
52+
db.session.commit()
6753

6854

6955
@app.teardown_request
7056
def shutdown_session(exception=None):
71-
session.remove()
57+
db.session.remove()
7258

7359

7460
@app.context_processor

examples/flask_example/manage.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@
55

66
sys.path.append('..')
77

8-
from flask_example import app, db, models, Base, engine
8+
from flask_example import app, db
99

1010

1111
manager = Manager(app)
1212
manager.add_command('runserver', Server())
1313
manager.add_command('shell', Shell(make_context=lambda: {
1414
'app': app,
15-
'db': db,
16-
'models': models
15+
'db': db
1716
}))
1817

1918

2019
@manager.command
2120
def syncdb():
2221
from flask_example.models import user
2322
from social.apps.flask_app import models
24-
Base.metadata.create_all(bind=engine)
23+
db.drop_all()
24+
db.create_all()
2525

2626
if __name__ == '__main__':
2727
manager.run()
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
from sqlalchemy import Column, Integer, String, Boolean
2-
31
from flask.ext.login import UserMixin
42

5-
from flask_example import Base
3+
from flask_example import db
64

75

8-
class User(Base, UserMixin):
6+
class User(db.Model, UserMixin):
97
__tablename__ = 'users'
10-
id = Column(Integer, primary_key=True)
11-
username = Column(String(200))
12-
password = Column(String(200), default='')
13-
name = Column(String(100))
14-
email = Column(String(200))
15-
active = Column(Boolean, default=True)
8+
id = db.Column(db.Integer, primary_key=True)
9+
username = db.Column(db.String(200))
10+
password = db.Column(db.String(200), default='')
11+
name = db.Column(db.String(100))
12+
email = db.Column(db.String(200))
13+
active = db.Column(db.Boolean, default=True)
1614

1715
def is_active(self):
1816
return self.active
Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
Flask==0.10.1
2-
Flask-SQLAlchemy==0.16
3-
Flask-Login==0.1.3
4-
Flask-Evolution==0.6
5-
Flask-Script==0.3.3
6-
Jinja2==2.6
7-
SQLAlchemy==0.7.8
8-
Werkzeug==0.8.3
9-
wsgiref==0.1.2
10-
pysqlite==2.6.3
1+
Flask
2+
Flask-SQLAlchemy
3+
Flask-Login
4+
Flask-Script
5+
Werkzeug
6+
pysqlite
7+
Jinja2

examples/flask_example/settings.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
SECRET_KEY = 'random-secret-key'
77
SESSION_COOKIE_NAME = 'psa_session'
88
DEBUG = False
9-
SQLALCHEMY_DATABASE_URI = 'sqlite:///test.db'
9+
from os.path import dirname, abspath
10+
SQLALCHEMY_DATABASE_URI = 'sqlite:////%s/test.sqlite' % dirname(abspath(__file__))
11+
1012
DEBUG_TB_INTERCEPT_REDIRECTS = False
1113
SESSION_PROTECTION = 'strong'
1214

social/apps/flask_app/models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ class FlaskStorage(BaseSQLAlchemyStorage):
1919
code = None
2020

2121

22-
def init_social(app, Base, session):
22+
def init_social(app, db):
2323
UID_LENGTH = app.config.get(setting_name('UID_LENGTH'), 255)
2424
User = module_member(app.config[setting_name('USER_MODEL')])
25-
app_session = session
25+
app_session = db.session
2626

2727
class _AppSession(object):
2828
@classmethod
2929
def _session(cls):
3030
return app_session
3131

32-
class UserSocialAuth(_AppSession, Base, SQLAlchemyUserMixin):
32+
class UserSocialAuth(_AppSession, db.Model, SQLAlchemyUserMixin):
3333
"""Social Auth association model"""
3434
__tablename__ = 'social_auth_usersocialauth'
3535
__table_args__ = (UniqueConstraint('provider', 'uid'),)
@@ -50,7 +50,7 @@ def username_max_length(cls):
5050
def user_model(cls):
5151
return User
5252

53-
class Nonce(_AppSession, Base, SQLAlchemyNonceMixin):
53+
class Nonce(_AppSession, db.Model, SQLAlchemyNonceMixin):
5454
"""One use numbers"""
5555
__tablename__ = 'social_auth_nonce'
5656
__table_args__ = (UniqueConstraint('server_url', 'timestamp', 'salt'),)
@@ -59,7 +59,7 @@ class Nonce(_AppSession, Base, SQLAlchemyNonceMixin):
5959
timestamp = Column(Integer)
6060
salt = Column(String(40))
6161

62-
class Association(_AppSession, Base, SQLAlchemyAssociationMixin):
62+
class Association(_AppSession, db.Model, SQLAlchemyAssociationMixin):
6363
"""OpenId account association"""
6464
__tablename__ = 'social_auth_association'
6565
__table_args__ = (UniqueConstraint('server_url', 'handle'),)
@@ -71,7 +71,7 @@ class Association(_AppSession, Base, SQLAlchemyAssociationMixin):
7171
lifetime = Column(Integer)
7272
assoc_type = Column(String(64))
7373

74-
class Code(_AppSession, Base, SQLAlchemyCodeMixin):
74+
class Code(_AppSession, db.Model, SQLAlchemyCodeMixin):
7575
__tablename__ = 'social_auth_code'
7676
__table_args__ = (UniqueConstraint('code', 'email'),)
7777
id = Column(Integer, primary_key=True)

0 commit comments

Comments
 (0)