示例#1
0
class UserAddress(db.Model):
    __tablename__ = 'user_address'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
    address_id = db.Column(db.Integer,
                           db.ForeignKey('address.id'),
                           primary_key=True)
示例#2
0
class Phone(db.Model):
    """ User Model for storing user related details """
    __tablename__ = "phone"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(255), unique=True, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
示例#3
0
class Product(db.Model):
    __tablename__ = 'product'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String, nullable=False)
    # currency = db.Column(CurrencyType, default=Currency('KSH'))
    price = db.Column(db.Numeric(precision=9, scale=2))
    discount = db.Column(db.Numeric(precision=5), nullable=True)
    category_id = db.Column(db.Integer, db.ForeignKey("category.id"))
    category = db.relationship(Category, backref="products")
    slug = db.Column(db.String)

    _email = db.Column(db.String)

    @hybrid_property
    def email(self):
        return self._email

    @email.setter
    def email(self, email):
        self._email = email

    @observes('name')
    def compute_slug(self, name):
        """
        Computes the slug - shortened version of the title.
        :param title:  string, title to be shortened
        :return: string, resulting slug
        """
        self.slug = slugify(name)
示例#4
0
class Tag(db.Model):
    __tablename__ = 'tag'

    id = db.Column(db.Integer, primary_key=True)
    label = db.Column(db.String)
    parent_id = db.Column(db.Integer, db.ForeignKey('tag.id'))
    parent = db.relationship('Tag', remote_side=[id], backref='children')
    text_array = db.Column(ARRAY(db.String))    
    # makes sense for product and product variations
示例#5
0
class Engineer(Employee):
    __tablename__ = 'engineer'
    id = db.Column(db.Integer, db.ForeignKey('employee.id'), primary_key=True)
    engineer_name = db.Column(db.String(30))

    __mapper_args__ = {
        'polymorphic_identity': 'engineer',
    }

    def __repr__(self):
        return f'Engineer {self.engineer_name}'
示例#6
0
class Boss(Employee):
    __tablename__ = 'boss'
    id = db.Column(db.Integer, db.ForeignKey('employee.id'), primary_key=True)
    boss_name = db.Column(db.String(30))

    __mapper_args__ = {
        'polymorphic_identity': 'boss',
    }

    def __repr__(self):
        return f'Boss {self.boss_name}'
示例#7
0
from instance import db

category_tree = db.Table(
    'category_tree', 
    db.Column('parent_id', db.Integer, db.ForeignKey('category.id')),
    db.Column('children_id', db.Integer, db.ForeignKey('category.id'))
)

class Category(db.Model):
    __tablename__ = 'category'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    children = db.relationship(
        'Category', 
        secondary=category_tree,
        primaryjoin=(category_tree.c.parent_id == id),
        secondaryjoin=(category_tree.c.children_id == id),
        backref=db.backref('parents', lazy='dynamic'),
        lazy='dynamic'
    )

    def __repr__(self):
        return '<Category> {}'.format(self.id)
    
    
    # a child has a list of parents
    # a parent has a list of children