""" Implement different models used by Stackspin panel """ from flask import current_app from flask_sqlalchemy import SQLAlchemy # pylint: disable=cyclic-import # This is based on the documentation of Flask Alchemy #from app import db # We need this import at some point to hook up roles and users # from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey, Integer, String db = SQLAlchemy() # Pylint complains about too-few-public-methods. Methods will be added once # this is implemented. # pylint: disable=too-few-public-methods class App(db.Model): """ The App object, interact with the App database object. Data is stored in the local database. """ id = db.Column(Integer, primary_key=True) name = db.Column(String(length=64)) slug = db.Column(String(length=64), unique=True) def __repr__(self): return f"{self.id} <{self.name}>" # Pylint complains about too-few-public-methods. Methods will be added once # this is implemented. # pylint: disable=too-few-public-methods class AppRole(db.Model): """ The AppRole object, stores the roles Users have on Apps """ # pylint: disable=no-member user_id = db.Column(String(length=64), primary_key=True) # pylint: disable=no-member app_id = db.Column(Integer, ForeignKey('app.id'), primary_key=True) # pylint: disable=no-member role = db.Column(String(length=64)) def __repr__(self): return f"{self.role} for {self.user_id} on {self.app_id}"