from ..extensions import db class Tenant(db.Model): """Tenant model""" __bind_key__ = 'public' __table_args__ = {'schema': 'public'} # Versioning Information created_at = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) updated_at = db.Column(db.DateTime, nullable=False, server_default=db.func.now(), onupdate=db.func.now()) # company Information id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True, nullable=False) website = db.Column(db.String(255), nullable=True) # Licensing Information license_start_date = db.Column(db.Date, nullable=True) license_end_date = db.Column(db.Date, nullable=True) allowed_monthly_interactions = db.Column(db.Integer, nullable=True) # Relations users = db.relationship('User', backref='tenant') def __repr__(self): return '' % self.name class User(db.Model): """User model""" __bind_key__ = 'public' __table_args__ = {'schema': 'public'} # Versioning Information created_at = db.Column(db.DateTime, nullable=False, server_default=db.func.now()) updated_at = db.Column(db.DateTime, nullable=False, server_default=db.func.now(), onupdate=db.func.now()) # User Information id = db.Column(db.Integer, primary_key=True) user_name = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(255), unique=True, nullable=False) password = db.Column(db.String(255), nullable=False) first_name = db.Column(db.String(80), nullable=False) last_name = db.Column(db.String(80), nullable=False) is_active = db.Column(db.Boolean, default=True) is_tester = db.Column(db.Boolean, default=False) is_admin = db.Column(db.Boolean, default=False) valid_to = db.Column(db.Date, nullable=True) # Login Information last_login = db.Column(db.DateTime, nullable=True) authenticated = db.Column(db.Boolean, default=False) # Relations tenant_id = db.Column(db.Integer, db.ForeignKey('public.tenant.id'), nullable=False) def __repr__(self): return '' % self.name()