class Items(SurrogatePK, Model): """A role for a user.""" __tablename__ = 'items' name = Column(db.String(80), nullable=False) image_url = Column(db.String(100), nullable=False) expiration_time = Column(db.DECIMAL(16), nullable=False) min_bid = Column(db.DECIMAL(8), nullable=False) min_increment_bid = Column(db.DECIMAL(8), nullable=False) status = Column(db.Integer(), default=1, nullable=False) def __init__(self, **kwargs): """Create instance.""" db.Model.__init__(self, **kwargs) def to_dict(self): bid = Bids.current_item_bid(self.id) return { "id": self.id, "title": self.name, "image_url": self.image_url, "expiration_time": self.expiration_time, "min_bid": self.min_bid, "min_increment_bid": self.min_increment_bid, "current_bid": bid, "status": self.status } def __repr__(self): """Represent instance as a unique string.""" return '<Items({name})>'.format(name=self.name)
class User(UserMixin, SurrogatePK, Model): """A user of the app.""" __tablename__ = 'users' username = Column(db.String(80), unique=True) email = Column(db.String(80), unique=True) #: The hashed password password = Column(db.String(128), nullable=True) created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow) first_name = Column(db.String(30), nullable=True) last_name = Column(db.String(30), nullable=True) active = Column(db.Boolean(), default=False) is_admin = Column(db.Boolean(), default=False) fb_id = Column(db.String(50), unique=True) image_url = Column(db.String(200)) def __init__(self, username=None, email=None, password=None, **kwargs): """Create instance.""" db.Model.__init__(self, username=username, email=email, **kwargs) if password: self.set_password(password) else: self.password = None def to_dict(self): return { "id": self.id, "username": self.username, "email": self.email, "first_name": self.first_name, "image_url": self.image_url } def set_password(self, password): """Set password.""" self.password = bcrypt.generate_password_hash(password) def check_password(self, value): """Check password.""" return bcrypt.check_password_hash(self.password, value) @property def full_name(self): """Full user name.""" return '{0} {1}'.format(self.first_name, self.last_name) def __repr__(self): """Represent instance as a unique string.""" return '<User({username!r})>'.format(username=self.username)
class Role(SurrogatePK, Model): """A role for a user.""" __tablename__ = 'roles' name = Column(db.String(80), unique=True, nullable=False) user_id = reference_col('users', nullable=True) user = relationship('User', backref='roles') def __init__(self, name, **kwargs): """Create instance.""" db.Model.__init__(self, name=name, **kwargs) def __repr__(self): """Represent instance as a unique string.""" return '<Role({name})>'.format(name=self.name)