# coding=UTF-8 from flask_sqlalchemy import BaseQuery from api import db class Currencies(db.Model): __tablename__ = 'product-currencies' iso3char = db.Column(db.String(3), primary_key=True) exchange_rate = db.Column(db.Numeric, default=1) class MaterialQuery(BaseQuery): def wallpapers(self): return self.filter(Material.name.in_(Material.WALLPAPER_MATERIALS)) def canvas(self): return self.filter(Material.name.in_(Material.CANVAS_MATERIALS)) class Material(db.Model): __tablename__ = 'product-materials' query_class = MaterialQuery WALLPAPER_MATERIALS = ['standard-wallpaper', 'self-adhesive-wallpaper', 'premium-wallpaper'] CANVAS_MATERIALS = ['standard-canvas'] id = db.Column('materialid', db.Integer, primary_key=True) name = db.Column('material', db.String(255), nullable=False) material_price = db.relationship('MaterialPrice', uselist=False) @property def price(self): if self.material_price is not None: return self.material_price.price return None def to_json(self): return { 'id': self.id, 'name': self.name, 'price': float(self.price) } def __repr__(self): return self.name class MaterialPrice(db.Model): __tablename__ = 'v_materialprice'; groupid = db.Column(db.Integer) materialid = db.Column(db.Integer, db.ForeignKey('product-materials.materialid')) price = db.Column(db.Numeric) __table_args__ = (db.PrimaryKeyConstraint(groupid, materialid),)