class User(UserMixin, db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=True, default='default.jpg') password = db.Column(db.String(60), nullable=False) company_id = db.Column('Company', db.Integer, db.ForeignKey('company.id')) role_id = db.Column('Role', db.Integer, db.ForeignKey('role.id')) is_admin = db.Column(db.Boolean, default=False) # def __init__(self, username, email, image_file, password, company_id, is_admin): @property def password(self): raise AttributeError('password is not a readable attribute.') @password.setter def password(self, password): self.password_hash = generate_password_hash(password) def verify_password(self, password): return check_password_hash(self.password_hash, password) def is_accessible(self): return login.current_user.is_authenticated() def __repr__(self): return '<User: {}>'.format(self.image_file)
class Company(db.Model): __tablename__ = 'company' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), unique=True, nullable=False) description = db.Column(db.String(200)) user = db.relationship('User', backref='company', lazy='dynamic') def __repr__(self): return '<Company: {}>'.format(self.name)
class Role(db.Model): """ Create a Role table """ __tablename__ = 'roles' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(60), unique=True) description = db.Column(db.String(200)) user = db.relationship('User', backref='role', lazy='dynamic') def __repr__(self): return '<Role: {}>'.format(self.name)
class Category(db.Model): """ Create a Category table """ __tablename__ = 'category' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(60), unique=True) description = db.Column(db.String(200)) members = db.relationship('Member', backref='category', lazy='dynamic') def __repr__(self): return '<Category: {}>'.format(self.name)
class User(UserMixin, db.Model): """ Create a User table """ # Ensures table will be named in plural and not in singular # as is the name of the model __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(60), index=True, unique=True) username = db.Column(db.String(60), index=True, unique=True) first_name = db.Column(db.String(60), index=True) last_name = db.Column(db.String(60), index=True) password_hash = db.Column(db.String(128)) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) is_admin = db.Column(db.Boolean, default=False) @property def password(self): """ Prevent pasword from being accessed """ raise AttributeError('password is not a readable attribute.') @password.setter def password(self, password): """ Set password to a hashed password """ self.password_hash = generate_password_hash(password) def verify_password(self, password): """ Check if hashed password matches actual password """ return check_password_hash(self.password_hash, password) def __repr__(self): return '<User: {}>'.format(self.username)