class Fasteners(db.Model, Product): fast_type = db.Column(db.String(20)) outer_diam = db.Column(db.Float) inner_diam = db.Column(db.Float) nut_height = db.Column(db.Float) thread_diam = db.Column(db.String(5)) # e.g. M14 thread_length = db.Column(db.Float) key_size = db.Column(db.Integer) fast_shape = db.Column(db.String(20)) fast_pitch = db.Column(db.Float) color = db.Column(db.String(20)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.3 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Колёсный крепёж'
class TruckRim(db.Model, Product): width = db.Column(db.Float) diameter = db.Column(db.Integer) holes = db.Column(db.Integer) PCD = db.Column(db.Float) offset = db.Column(db.String(20)) dia = db.Column(db.Float) rim_type = db.Column(db.String(20)) color = db.Column(db.String(20)) treatment = db.Column(db.String(40)) for_car = db.Column(db.String(40)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.2 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Диски грузовые'
class TruckTire(db.Model, Product): truck_width = db.Column(db.Integer) truck_height = db.Column(db.Integer) truck_diameter = db.Column(db.String(5)) speed_index = db.Column(db.String(3)) load_index = db.Column(db.String(10)) axis = db.Column(db.String(40)) tube = db.Column(db.String(20)) layer = db.Column(db.String(20)) type = db.Column(db.String(40)) restored = db.Column(db.String(20)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.15 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Шины грузовые'
class Secrets(db.Model, Product): lock_type = db.Column(db.String(20)) diameter = db.Column(db.String(5)) # e.g. M14 length = db.Column(db.Float) thread_step = db.Column(db.Float) head_size = db.Column(db.String(20)) head_form = db.Column(db.String(20)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.3 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Секретки'
class Battery(db.Model, Product): capacity = db.Column(db.Integer) polarity = db.Column(db.String(20)) cleats = db.Column(db.String(20)) current = db.Column(db.Integer) voltage = db.Column(db.Integer) dimensions = db.Column(db.String(20)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.25 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Аккумуляторы' if not kwargs.get('article'): self.article = 'AK' + str(hash(kwargs.get('title')))[:10]
class CarTire(db.Model, Product): width = db.Column(db.Integer) height = db.Column(db.Integer) diameter = db.Column(db.String(5)) season = db.Column(db.String(10)) stud = db.Column(db.String(10)) speed_index = db.Column(db.String(3)) load_index = db.Column(db.String(10)) runflat = db.Column(db.Boolean, default=False) powerload = db.Column(db.Boolean, default=False) purpose = db.Column(db.String(20)) omologation = db.Column(db.String(20)) cartype = db.Column(db.String(30)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.15 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Шины легковые' self.runflat = True if kwargs.get('runflat') else False self.powerload = True if kwargs.get('powerload') else False self.stud = self.get_stud( kwargs.get('stud')) if not kwargs.get('stud') else None self.season = self.get_season( kwargs.get('season')) if kwargs.get('season') else None if kwargs.get('supplier') == 'pwrs': self.title = kwargs.get('brand') + kwargs.get('title') @staticmethod def get_stud(arg): arg = str(arg).lower() if arg == 'ш.' or arg == 'да' or arg == 'y': return 'шипованная' elif arg == 'н/ш.' or arg == 'n': return 'нешипованная' @staticmethod def get_season(arg): arg = str(arg).lower() if arg == 'летняя' or arg == 'лето': return 'летняя' elif arg == 'зимняя' or arg == 'зима': return 'зимняя' elif arg == 'всесезонная' or arg == 'всесезон': return 'всесезонная'
class Product: id = db.Column(db.Integer, primary_key=True) category = db.Column(db.String(40)) article = db.Column(db.String(40)) title = db.Column(db.String(250)) brand = db.Column(db.String(40)) brand_latin = db.Column(db.String(40)) model = db.Column(db.String(40)) img = db.Column(db.String(200)) supplier = db.Column(db.String(40)) address = db.Column(db.String(40)) count = db.Column(db.Integer) purchase_price = db.Column(db.Float) # цена закупки retail_price = db.Column(db.Integer) # рекомендуема розничная цена markup = db.Column(db.Float) # наценка selling_price = db.Column(db.Integer) # моя цена продажи low_price = db.Column(db.Integer) # цена "для своих" weight = db.Column(db.Float) volume = db.Column(db.Float) origin = db.Column(db.String(40)) manufacturer = db.Column(db.String(40)) description = db.Column(db.Text) updated = db.Column(db.DateTime, default=datetime.now()) def __init__(self, *args, **kwargs): if not kwargs.get('selling_price'): self.selling_price = int( (kwargs.get('purchase_price') or 0) * kwargs.get('markup')) # todo: не наследуется def __repr__(self): return f'{self.id}.[{self.article}] {self.title}'
class CarRim(db.Model, Product): width = db.Column(db.String(20)) height = db.Column(db.String(20)) diameter = db.Column(db.String(20)) holes = db.Column(db.String(20)) PCD = db.Column(db.String(20)) offset = db.Column(db.String(20)) dia = db.Column(db.String(20)) rim_type = db.Column(db.String(20)) color = db.Column(db.String(20)) treatment = db.Column(db.String(20)) for_car = db.Column(db.String(20)) def __init__(self, *args, **kwargs): kwargs['markup'] = 1.2 if not kwargs.get('markup') else kwargs.get( 'markup') super().__init__(*args, **kwargs) Product.__init__(self, *args, **kwargs) self.category = 'Диски легковые'