add material models
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# coding=UTF-8
|
# coding=UTF-8
|
||||||
|
|
||||||
|
from flask_sqlalchemy import BaseQuery
|
||||||
from api import db
|
from api import db
|
||||||
|
|
||||||
|
|
||||||
@@ -9,3 +10,54 @@ class Currencies(db.Model):
|
|||||||
|
|
||||||
iso3char = db.Column(db.String(3), primary_key=True)
|
iso3char = db.Column(db.String(3), primary_key=True)
|
||||||
exchange_rate = db.Column(db.Numeric, default=1)
|
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),)
|
||||||
|
|||||||
Reference in New Issue
Block a user