from sqlalchemy.orm.exc import NoResultFound
from Idpwoa_Backend import dbsession

from sqlalchemy import or_ 
import  datetime
from idpwoa.models import loginTbl

class SQLAlchemyUserBackend(object):
    supports_anonymous_user = True
    supports_inactive_user = True

    def __init__(self):
        self.session = dbsession.Session()
    
    def authenticate(self, request, user_name=None, password=None):
        try:
            print('inside')
            user = self.session.query(loginTbl).filter(loginTbl.username == user_name).one()
            user_name = user.username
            if user.check_password(password):
                print('inside if')
                test = user.check_password("password")
                self.session.commit()
                print(user.username)
                return user
            else:
                print('else')
                return None
        except Exception as e:
            print(e)
            self.session.rollback()
            self.session.close()
            return None

    def get_user(self, user_name):
        try:
            # print("========GET custom user==========")
            user = self.session.query(loginTbl).filter_by(username=user_name).one()
        except NoResultFound:
            self.session.rollback()
            self.session.close()
            return None

        return user