from flask import g, Blueprint
from flask.ext.login import login_required, login_user

from social.actions import do_auth, do_complete, do_disconnect
from social.apps.flask_app.utils import strategy


social_auth = Blueprint('social', __name__)


@social_auth.route('/login/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def auth(backend):
    return do_auth(g.strategy)


@social_auth.route('/complete/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def complete(backend, *args, **kwargs):
    """Authentication complete view, override this view if transaction
    management doesn't suit your needs."""
    return do_complete(g.strategy, login=lambda strat, user: login_user(user),
                       user=g.user, *args, **kwargs)


@social_auth.route('/disconnect/<string:backend>/', methods=('POST',))
@social_auth.route('/disconnect/<string:backend>/<int:association_id>/',
                   methods=('POST',))
@login_required
@strategy()
def disconnect(backend, association_id=None):
    """Disconnects given backend from current logged in user."""
    return do_disconnect(g.strategy, g.user, association_id)

from flask import g, Blueprint, request
from flask.ext.login import login_required, login_user

from social.actions import do_auth, do_complete, do_disconnect
from social.apps.flask_app.utils import strategy


social_auth = Blueprint('social', __name__)


@social_auth.route('/login/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def auth(backend):
    return do_auth(g.strategy)


@social_auth.route('/complete/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def complete(backend, *args, **kwargs):
    """Authentication complete view, override this view if transaction
    management doesn't suit your needs."""
    return do_complete(g.strategy, login=do_login, user=g.user,
                       *args, **kwargs)


@social_auth.route('/disconnect/<string:backend>/', methods=('POST',))
@social_auth.route('/disconnect/<string:backend>/<int:association_id>/',
                   methods=('POST',))
@login_required
@strategy()
def disconnect(backend, association_id=None):
    """Disconnects given backend from current logged in user."""
    return do_disconnect(g.strategy, g.user, association_id)


def do_login(strategy, user):
    return login_user(user, remember=request.cookies.get('remember') or
                                     request.args.get('remember') or
                                     request.form.get('remember') or False)

Support remember flag when calling login on flask app
Support remember flag when calling login on flask app

- from flask import g, Blueprint
+ from flask import g, Blueprint, request
  from flask.ext.login import login_required, login_user
  
  from social.actions import do_auth, do_complete, do_disconnect
  from social.apps.flask_app.utils import strategy
  
  
  social_auth = Blueprint('social', __name__)
  
  
  @social_auth.route('/login/<string:backend>/', methods=('GET', 'POST'))
  @strategy('social.complete')
  def auth(backend):
      return do_auth(g.strategy)
  
  
  @social_auth.route('/complete/<string:backend>/', methods=('GET', 'POST'))
  @strategy('social.complete')
  def complete(backend, *args, **kwargs):
      """Authentication complete view, override this view if transaction
      management doesn't suit your needs."""
-     return do_complete(g.strategy, login=lambda strat, user: login_user(user),
+     return do_complete(g.strategy, login=do_login, user=g.user,
-                        user=g.user, *args, **kwargs)
+                        *args, **kwargs)
  
  
  @social_auth.route('/disconnect/<string:backend>/', methods=('POST',))
  @social_auth.route('/disconnect/<string:backend>/<int:association_id>/',
                     methods=('POST',))
  @login_required
  @strategy()
  def disconnect(backend, association_id=None):
      """Disconnects given backend from current logged in user."""
      return do_disconnect(g.strategy, g.user, association_id)
  
+ 
+ def do_login(strategy, user):
+     return login_user(user, remember=request.cookies.get('remember') or
+                                      request.args.get('remember') or
+                                      request.form.get('remember') or False)
+ 
Support remember flag when calling login on flask app
## Code Before:
from flask import g, Blueprint
from flask.ext.login import login_required, login_user

from social.actions import do_auth, do_complete, do_disconnect
from social.apps.flask_app.utils import strategy


social_auth = Blueprint('social', __name__)


@social_auth.route('/login/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def auth(backend):
    return do_auth(g.strategy)


@social_auth.route('/complete/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def complete(backend, *args, **kwargs):
    """Authentication complete view, override this view if transaction
    management doesn't suit your needs."""
    return do_complete(g.strategy, login=lambda strat, user: login_user(user),
                       user=g.user, *args, **kwargs)


@social_auth.route('/disconnect/<string:backend>/', methods=('POST',))
@social_auth.route('/disconnect/<string:backend>/<int:association_id>/',
                   methods=('POST',))
@login_required
@strategy()
def disconnect(backend, association_id=None):
    """Disconnects given backend from current logged in user."""
    return do_disconnect(g.strategy, g.user, association_id)

## Instruction:
Support remember flag when calling login on flask app
## Code After:
from flask import g, Blueprint, request
from flask.ext.login import login_required, login_user

from social.actions import do_auth, do_complete, do_disconnect
from social.apps.flask_app.utils import strategy


social_auth = Blueprint('social', __name__)


@social_auth.route('/login/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def auth(backend):
    return do_auth(g.strategy)


@social_auth.route('/complete/<string:backend>/', methods=('GET', 'POST'))
@strategy('social.complete')
def complete(backend, *args, **kwargs):
    """Authentication complete view, override this view if transaction
    management doesn't suit your needs."""
    return do_complete(g.strategy, login=do_login, user=g.user,
                       *args, **kwargs)


@social_auth.route('/disconnect/<string:backend>/', methods=('POST',))
@social_auth.route('/disconnect/<string:backend>/<int:association_id>/',
                   methods=('POST',))
@login_required
@strategy()
def disconnect(backend, association_id=None):
    """Disconnects given backend from current logged in user."""
    return do_disconnect(g.strategy, g.user, association_id)


def do_login(strategy, user):
    return login_user(user, remember=request.cookies.get('remember') or
                                     request.args.get('remember') or
                                     request.form.get('remember') or False)
