text: """
  user_models.py file. Part of the Contextualise project.
  
  March 4, 2019
  Brett Alistair Kromkamp (brett.kromkamp@gmail.com)
  """
  
  from flask_security import UserMixin, RoleMixin
  from sqlalchemy import Boolean, DateTime, Column, Integer, String, ForeignKey
  from sqlalchemy.orm import relationship, backref
  
  from contextualise.security import user_store
  
  
  class RolesUsers(user_store.Base):
      __tablename__ = "roles_users"
      id = Column(Integer(), primary_key=True)
      user_id = Column("user_id", Integer(), ForeignKey("user.id"))
      role_id = Column("role_id", Integer(), ForeignKey("role.id"))
  
  
  class Role(user_store.Base, RoleMixin):
      __tablename__ = "role"
      id = Column(Integer(), primary_key=True)
      name = Column(String(80), unique=True)
      description = Column(String(255))
  
  
  class User(user_store.Base, UserMixin):
      __tablename__ = "user"
      id = Column(Integer, primary_key=True)
      email = Column(String(255), unique=True)
      username = Column(String(255))
      password = Column(String(255))
      last_login_at = Column(DateTime())
      current_login_at = Column(DateTime())
      last_login_ip = Column(String(100))
      current_login_ip = Column(String(100))
      login_count = Column(Integer)
      active = Column(Boolean())
      confirmed_at = Column(DateTime())
      roles = relationship(
          "Role",
          secondary="roles_users",
          backref=backref(
              "users",
              lazy="dynamic"))
  