class TokenBlacklist(db.Model): __tablename__ = 'token_blacklist' id = db.Column(db.Integer, primary_key=True) jti = db.Column(db.String(36), nullable=False, unique=True) token_type = db.Column(db.String(10), nullable=False) revoked = db.Column(db.Boolean, nullable=False) expires = db.Column(db.DateTime, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) def __repr__(self): return '<TokenBlacklist {}>'.format(self.user_id)
class User(db.Model): """Basic user model """ id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(255), nullable=False) active = db.Column(db.Boolean, default=True) def __init__(self, **kwargs): super(User, self).__init__(**kwargs) self.password = pwd_context.hash(self.password) def __repr__(self): return "<User %s>" % self.username
class JsonWebToken(BaseModel): jti = db.Column(db.String(36), nullable=False) token_type = db.Column(db.Integer, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) blacklisted = db.Column(db.Boolean, nullable=False, default=False) expires = db.Column(db.DateTime, nullable=False)
class Permission(Model): __tablename__ = "acl_permissions" name = db.Column(db.String(64), nullable=False) resource_type_id = db.Column(db.Integer, db.ForeignKey("acl_resource_types.id")) app_id = db.Column(db.Integer, db.ForeignKey("acl_apps.id"))
class Resource(Model): __tablename__ = "acl_resources" name = db.Column(db.String(128), nullable=False) resource_type_id = db.Column(db.Integer, db.ForeignKey("acl_resource_types.id")) app_id = db.Column(db.Integer, db.ForeignKey("acl_apps.id"))
class ResourceGroup(Model): __tablename__ = "acl_resource_groups" name = db.Column(db.String(64), index=True, nullable=False) resource_type_id = db.Column(db.Integer, db.ForeignKey("acl_resource_types.id")) app_id = db.Column(db.Integer, db.ForeignKey('acl_apps.id'))
class Project(db.Model): """ This model holds information about a project and its admin """ __tablename__ = "project" id = db.Column(db.Integer, primary_key=True) project_name = db.Column( db.String(80), nullable=False, ) project_description = db.Column(db.String(128), default='Image labelling') admin_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete="cascade", onupdate="cascade"), nullable=False) labels = db.relationship('Label', backref='project', lazy=True, cascade="all, save-update, delete", passive_deletes=True) images = db.relationship('Image', backref='project', lazy=True, cascade="all, save-update, delete", passive_deletes=True) models = db.relationship('MLClassifier', backref='project', lazy=True, cascade="all, save-update, delete", passive_deletes=True) def __init__(self, project_name, project_description, admin_id): """ Initializes the project instance """ self.project_name = project_name self.project_description = project_description self.admin_id = admin_id def __repr__(self): """ Returns the object reprensentation """ return "<Project(project_name='%s', project_id='%s', project_description='%s')>" % ( self.project_name, self.id, self.project_description)