示例#1
0
class User(ResourceMixin, db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80))
    email = db.Column(db.String(80))
    password = db.Column(db.String(180))
    lots = db.relationship(Lot, backref='lots', passive_deletes=True)

    def __init__(self, username, email, password):
        self.username = username
        self.password = User.encrypt_password(password)
        self.email = email

    @classmethod
    def find_by_username(cls, username):
        return cls.query.filter_by(username=username).first()

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()

    # @classmethod
    # def find_by_identity(cls, email):
    #     return cls.query.filter_by(email=email).first()

    @classmethod
    def all(cls):
        return cls.query.all()

    @staticmethod
    def encrypt_password(password):
        return generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password, password)
示例#2
0
class RevokedTokenModel(db.Model, ResourceMixin):
    __tablename__ = 'revoked_tokens'
    id = db.Column(db.Integer, primary_key=True)
    jti = db.Column(db.String(120))

    @classmethod
    def is_jti_blacklisted(cls, jti):
        query = cls.query.filter_by(jti=jti).first()
        return bool(query)
示例#3
0
class Photo(db.Model, LightResourceMixin):
    __tablename__ = 'photos'

    id = db.Column(db.Integer, primary_key=True)
    lot_id = db.Column(db.Integer, db.ForeignKey('lots.id'))
    photo_path = db.Column(db.String)

    def __init__(self, lot_id, photo_path):
        self.lot_id = lot_id
        self.photo_path = photo_path

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_by_lot_id(cls, lot_id):
        return cls.query.filter_by(lot_id=lot_id).all()

    @staticmethod
    def allowed_file(filename):
        return '.' in filename and \
               filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
示例#4
0
文件: lot.py 项目: HelenShy/Flask-MLS
class Lot(ResourceMixin, db.Model):
    __tablename__ = 'lots'

    id = db.Column(db.Integer, primary_key=True)
    agent_id = db.Column(db.Integer,
                         db.ForeignKey('users.id',
                                       onupdate='CASCADE',
                                       ondelete='CASCADE'),
                         index=True,
                         nullable=False)
    agent = db.relationship('User')

    type = db.Column(db.String)
    description = db.Column(db.String(80))
    square = db.Column(db.Integer)
    qty_rooms = db.Column(db.Integer)
    parking = db.Column(db.Boolean)
    garageSpaces = db.Column(db.Integer)
    year_built = db.Column(db.Integer)
    price = db.Column(db.Integer)
    # owner_id = db.Column(db.Integer, db.ForeignKey('owner.id', ),
    #                      nullable=False)
    photos = db.relationship('Photo',
                             cascade="all,delete",
                             backref='lot',
                             lazy='dynamic')
    address = db.relationship("Address", backref="lot")
    geo = db.relationship("Geo", backref="lot")
    # from mls.blueprints.auth.models import User
    status = db.Column(db.String)

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def all(cls):
        return cls.query.all()

    @classmethod
    def editable(cls, id):
        current_user = get_jwt_identity()
        lot_owner = Lot.find_by_id(id).agent
        return current_user == lot_owner.username