Ejemplo n.º 1
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password = db.Column(db.String(128))
    first_name = db.Column(db.String(300), nullable=False)
    last_name = db.Column(db.String(300), nullable=False)

    created_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    # comments = db.relationship('Comment', foreign_keys='comment.user_id', backref='user', lazy='dynamic')

    roles = db.relationship('Role', secondary=users_roles, backref='users')

    def __repr__(self):
        return '<User {}>'.format(self.username)

    def is_password_valid(self, password):
        return bcrypt.check_password_hash(self.password, password)

    def is_admin(self):
        return 'ROLE_ADMIN' in [r.name for r in self.roles]

    def is_not_admin(self):
        return not self.is_admin()
Ejemplo n.º 2
0
class Category(db.Model):
    __tablename__ = 'categories'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    slug = db.Column(db.String(255), index=True, unique=True)
    description = db.Column(db.String())
    created_at = db.Column(db.DateTime(), default=datetime.utcnow, index=True)
    updated_at = db.Column(db.DateTime())

    def get_summary(self):
        return {
            'id': self.id,
            'name': self.name,
            'description': self.description,
            'image_urls': [image.file_path.replace('\\', '/') for image in self.images]
        }

    def __repr__(self):
        return self.name
Ejemplo n.º 3
0
class Product(db.Model):
    __tablename__ = 'products'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    slug = db.Column(db.String, index=True, unique=True)
    description = db.Column(db.Text, nullable=False)

    price = db.Column(db.Integer, nullable=False)
    stock = db.Column(db.Integer, nullable=False)

    created_at = db.Column(db.DateTime(),
                           default=datetime.utcnow,
                           index=True,
                           nullable=False)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow,
                           nullable=False)
    publish_on = db.Column(db.DateTime, index=True, default=datetime.utcnow)

    tags = relationship('Tag', secondary=products_tags, backref='products')
    categories = relationship('Category',
                              secondary=products_categories,
                              backref='products')

    comments = relationship('Comment', backref='product', lazy='dynamic')

    def __repr__(self):
        return '<Product %r>' % self.name

    def __str__(self):
        return '<Product {}>'.format(self.name)

    def get_summary(self):
        return {
            'id': self.id,
            'name': self.name,
            'price': self.price,
            'stock': self.stock,
            'slug': self.slug,
            'comments_count': self.comments.count(),
            'tags': [{
                'id': t.id,
                'name': t.name
            } for t in self.tags],
            'categories': [{
                'id': c.id,
                'name': c.name
            } for c in self.categories],
            'image_urls': [i.file_path for i in self.images]
        }
Ejemplo n.º 4
0
class FileUpload(db.Model):
    __tablename__ = 'file_uploads'
    id = db.Column('id', db.Integer, primary_key=True)
    type = db.Column('type', db.String(15))  # this will be our discriminator

    file_path = db.Column(db.String, nullable=False)
    file_name = db.Column(db.String, nullable=False)
    file_size = db.Column(db.Integer, nullable=False)
    original_name = db.Column(db.String, nullable=False)

    created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
    __mapper_args__ = {
        'polymorphic_on': type,
        'polymorphic_identity': 'FileUpload'
    }
Ejemplo n.º 5
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    description = db.Column(db.String(100), nullable=True)