class Variantoptions(Base): __category__ = 'Product' available_for_sale = db.Column(db.Boolean, default=False) currently_not_in_stock = db.Column(db.Boolean) requires_shipping = db.Column(db.Boolean) quantity_available = db.Column(db.Integer) compare_at_price = db.Column(db.Float) unit_price = db.Column(db.Float) weight = db.Column(db.Float) price = db.Column(db.Float) namespace = db.Column(db.String) title = db.Column(db.String) sku = db.Column(db.String) key = db.Column(db.String) selected_options = db.relationship('Option', secondary=variants_options_relation, backref=db.backref('variantoptions', lazy='dynamic')) images = db.relationship('Image', secondary=images_options_relation, backref=db.backref('variantoptions', lazy='dynamic')) metafield = db.relationship('Metafield', backref='variant_options', lazy=True, uselist=True) product = db.Column(db.Integer, db.ForeignKey('product.id'))
class StoreModel(db.Model): __tablename__ = 'stores' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) items = db.relationship('ItemModel', lazy='dynamic') def __init__(self, name): self.name = name def json(self): return { 'id': self.id, 'name': self.name, 'items': [item.json() for item in self.items.all()] } @classmethod def find_by_name(cls, name): return cls.query.filter_by(name=name).first() @classmethod def find_all(cls): return cls.query.all() def save_to_db(self): db.session.add(self) db.session.commit() def delete_from_db(self): db.session.delete(self) db.session.commit()
class Domain(Base): __category__ = 'Shop' host = db.Column(db.String) ssl_enabled = db.Column(db.Boolean) url = db.Column(db.String) shops = db.relationship('Shop', lazy=True, uselist=True, backref=db.backref('domain', uselist=True))
class ItemModel(db.Model): __tablename__ = 'items' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) price = db.Column(db.Float(precision=2)) store_id = db.Column(db.Integer, db.ForeignKey('stores.id')) store = db.relationship('StoreModel') def __init__(self, name, price, store_id): self.name = name self.price = price self.store_id = store_id def json(self): return { 'id': self.id, 'name': self.name, 'price': self.price, 'store_id': self.store_id } @classmethod def find_by_name(cls, name): return cls.query.filter_by(name=name).first() @classmethod def find_all(cls): return cls.query.all() def save_to_db(self): db.session.add(self) db.session.commit() def delete_from_db(self): db.session.delete(self) db.session.commit()
class Product(Base, DateTimeMixin): __category__ = 'Product' sku = db.Column(db.String(255), nullable=False) title = db.Column(db.String) key = db.Column(db.String(30)) # required product_type = db.Column(db.String) description = db.Column(db.String) handle = db.Column( db.String ) # auto generate from title . like Black Shirt --> Black-Shirt descriptionHtml = db.Column(db.String) vendor = db.Column(db.String) namespace = db.Column(db.String(20), nullable=False) taxable = db.Column(db.Boolean(), default=False) available_for_sale = db.Column(db.Boolean(), default=False) total_inventory = db.Column(db.Integer, nullable=False) created_at = db.Column(db.DateTime(), default=db.func.now()) updated_at = db.Column(db.DateTime(), onupdate=db.func.now(), default=db.func.now()) metafields = db.relationship('Metafield', backref='prod', uselist=True) price_range = db.relationship('Pricerange', backref='pricerange', uselist=True) options = db.relationship('Option', secondary=options_products_relation, backref=db.backref('products', lazy='dynamic')) tags = db.relationship('Tag', secondary=tags_products_relation, backref=db.backref('products', lazy='dynamic')) selected_options = db.relationship( 'Selectedinput', secondary=selected_options_products_relation, backref=db.backref('products', lazy='dynamic')) variant_by_selected_options = db.relationship( 'Variantoptions', lazy=True, uselist=True, backref=db.backref('products', uselist=True)) @classmethod def get_by_sku(cls, sku): return cls.query.filter_by(sku=sku).first()
class Service(Policy): shop = db.relationship('Shop', lazy=True, uselist=True, backref=db.backref('terms_of_service', uselist=False))
class Refund(Policy): shop = db.relationship('Shop', lazy=True, uselist=True, backref=db.backref('refund_policy', uselist=False))
class Privacy(Policy): shop = db.relationship('Shop', lazy=True, uselist=True, backref=db.backref('privacy_policy', uselist=False))
class Valuetype(Base): __category__ = 'Product' value = db.Column(db.String) metafields = db.relationship('Metafield', backref='valuetype', lazy=True)