Bootstrap FreeKB - Flask - Resolve "AttributeError: object has no attribute 'is_active'"
Flask - Resolve "AttributeError: object has no attribute 'is_active'"

Updated:   |  Flask articles

Let's say something like this is being returned.

AttributeError: 'users' object has no attribute 'is_active'

 

This occurs when attempting to login a user using Flask LoginManager.Check out my article on Getting Started with Flask Login. This occurs when current_user.is_active returns False and can be resolved by adding the def is_active(self) function in your model.

from sqlalchemy import func
from flask_login import UserMixin
from . import db

class users(db.Model, UserMixin):
    date_created = db.Column(db.DateTime(timezone=True), default=func.now())
    date_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())     
    id           = db.Column(db.Integer,      nullable=False, unique=True, primary_key=True)   
    email        = db.Column(db.String(50),   nullable=False, unique=False)
    password     = db.Column(db.String(100),  nullable=False, unique=False)

    def is_active(self):
       return True

 

Or by including remember=False in login_user.

import os, re, sqlite3
from flask import Blueprint, render_template, flash, request, Markup, redirect, url_for, session
from flask_login import login_user, login_required, logout_user, current_user
from . import db
from werkzeug.security import check_password_hash

@views.route('/SignIn', methods=['GET', 'POST'])
def signin():
    from .models import users
    data = users.query.filter_by(email=request.form.get('email')).first()
    password_hash = check_password_hash(data.password, request.form.get('password'))
    login_user(data, remember=False)
    print("current_user.is_authenticated = " + str(current_user.is_authenticated))
    flash('Successfully Signed In' ,category='primary')
    return redirect(url_for('views.home'))

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter 54957d in the box below so that we can be sure you are a human.