Files
api2/api/models/product.py
T
2016-07-10 23:41:51 +02:00

65 lines
1.6 KiB
Python

# 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),)