Rev 9456 | Rev 9568 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 22-Mar-2010@author: ashish'''from elixir import metadata, setup_allfrom elixir.entity import Entityfrom elixir.fields import Fieldfrom elixir.options import using_options, using_table_optionsfrom elixir.relationships import OneToMany, ManyToOnefrom sqlalchemy import create_enginefrom sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Text, Enum, BigIntegerimport datetimeimport elixirclass EntityIDGenerator(Entity):id=Field(Integer, primary_key=True)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Item(Entity):id = Field(Integer, primary_key=True, autoincrement=True)product_group = Field(String(100))brand = Field(String(100), default='', server_default='')model_number = Field(String(50), default='', server_default='')model_name = Field(String(100), default='', server_default='')color = Field(String(20), default='', server_default='')category = Field(Integer, default=0, server_default="0")comments = Field(String(200))catalog_item_id = Field(Integer)feature_id = Field(Integer)feature_description = Field(String(200))mrp = Field(Float)sellingPrice = Field(Float)weight = Field(Float)addedOn = Field(DateTime)updatedOn = Field(DateTime)startDate = Field(DateTime)retireDate = Field(DateTime)comingSoonStartDate = Field(DateTime)expectedArrivalDate = Field(DateTime)status = Field(Integer)status_description = Field(String(100))bestDealText = Field(String(100))bestDealsDetailsText = Field(String(1000))bestDealsDetailsLink = Field(String(200))bestDealValue = Field(Float)bestSellingRank = Field(Integer)statusChangeLog = OneToMany("ItemChangeLog")defaultForEntity = Field(Boolean)risky = Field(Boolean)expectedDelay = Field(Integer)warranty_period = Field(Integer)isWarehousePreferenceSticky = Field(Boolean)preferredVendor = Field(Integer)type = Field(Enum('SERIALIZED', 'NON_SERIALIZED'), default = 'NON_SERIALIZED', server_default='NON_SERIALIZED')hasItemNo = Field(Boolean)activeOnStore = Field(Boolean)showSellingPrice = Field(Boolean)preferredInsurer = Field(Integer)asin = Field(String(20))holdInventory = Field(Integer, default=0, server_default="0")defaultInventory = Field(Integer, default=0, server_default="0")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")def __repr__(self):return "<Item>%d</item>" % (self.id)class ItemVatMaster(Entity):itemId = Field(Integer, primary_key=True, autoincrement=False)stateId = Field(Integer, primary_key=True, autoincrement=False)vatPercentage = Field(Float)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class ItemChangeLog(Entity):id = Field(Integer, primary_key=True, autoincrement=True)old_status = Field(Integer)new_status = Field(Integer)timestamp = Field(DateTime)item = ManyToOne("Item")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")def __repr__(self):return "<Log><id>%d</id><item>%d</item><old_status>%d</old_status><new_status>%d</new_status></Log>" %(self.id,self.item.id, self.old_status, self.new_status)class Category(Entity):id = Field(Integer, primary_key=True, autoincrement=False)label = Field(String(50))description = Field(String(200))parent_category_id = Field(Integer)display_name = Field(String(50))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class SimilarItems(Entity):item = ManyToOne('Item', primary_key=True)catalog_item_id = Field(Integer, primary_key=True, autoincrement=False)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class ProductNotification(Entity):item = ManyToOne('Item', primary_key=True)email = Field(String(100), primary_key=True, autoincrement=False)addedOn = Field(DateTime, primary_key=True, autoincrement=False)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Source(Entity):id = Field(Integer, primary_key=True, autoincrement=True)name = Field(String(50))identifier = Field(String(100))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class SourceItemPricing(Entity):source = ManyToOne('Source', primary_key=True)item = ManyToOne('Item', primary_key=True)mrp = Field(Float)sellingPrice = Field(Float)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class AuthorizationLog(Entity):id = Field(Integer, primary_key=True, autoincrement = True)timestamp = Field(DateTime, default=datetime.datetime.now())item = ManyToOne('Item')username = Field(String(30))reason = Field(Text)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class VoucherItemMapping(Entity):voucherType = Field(Integer, primary_key=True)item = ManyToOne('Item', primary_key=True)amount = Field(Integer, default=0, server_default="0")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class CategoryVatMaster(Entity):categoryId = Field(Integer, primary_key=True, autoincrement=False)stateId = Field(Integer, primary_key=True, autoincrement=False)minVal = Field(Integer, primary_key=True, autoincrement=False)maxVal = Field(Integer, primary_key=True, autoincrement=False)vatPercent = Field(Float)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class OOSTracker(Entity):itemId = Field(Integer, primary_key=True)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class EntityTag(Entity):tag = Field(String(100),primary_key=True)entityId = Field(Integer, primary_key=True, autoincrement=False)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Banner(Entity):bannerName = Field(String(100),primary_key=True)imageName = Field(String(100))link = Field(String(400))priority = Field(Integer)hasMap = Field(Boolean)bannerType = Field(Integer,primary_key=True, autoincrement=False)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class BannerMap(Entity):bannerName = Field(String(100))mapLink = Field(String(400))coordinates = Field(String(20))bannerType = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class BannerUriMapping(Entity):bannerName = Field(String(100))uri = Field(String(100))isActive = Field(Boolean)bannerType = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Campaign(Entity):id = Field(Integer,primary_key=True)campaignName = Field(String(255))imageName = Field(String(255))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class ItemInsurerMapping(Entity):id = Field(Integer, primary_key=True, autoincrement=True)itemId = Field(Integer)insurerId = Field(Integer)premiumType = Field(Integer)premiumAmount = Field(Float)insurerType = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Insurer(Entity):id = Field(Integer, primary_key=True, autoincrement=True)name = Field(String(255))address = Field(String(255))declaredAmount = Field(BigInteger)creditedAmount = Field(BigInteger)insurerType = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class FreebieItem(Entity):itemId = Field(Integer, primary_key=True)freebieItemId = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class BrandInfo(Entity):name = Field(String(255), primary_key=True)serviceCenterLocatorUrl = Field(String(255))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class StorePricing(Entity):item = ManyToOne('Item', primary_key=True)recommendedPrice = Field(Float)minPrice = Field(Float)maxPrice = Field(Float)minAdvancePrice = Field(Float)freebieItemId = Field(Integer)absoluteMinPrice = Field(Float)bestDealText = Field(String(100))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Amazonlisted(Entity):itemId = Field(Integer, primary_key=True, autoincrement=False)asin = Field(String(255))name = Field(String(255))brand = Field(String(255))model = Field(String(255))manufacturer_name = Field(String(255))part_number = Field(String(255))ean = Field(String(255))upc = Field(String(255))fbaPrice = Field(Float)sellingPrice = Field(Float)isFba = Field(Boolean)isNonFba = Field(Boolean)isInventoryOverride = Field(Boolean)color = Field(String(255))category = Field(String(255))handlingTime = Field(Integer)isCustomTime = Field(Boolean)category_code = Field(Integer, default=0, server_default="0")mfnPriceLastUpdatedOn = Field(DateTime)fbaPriceLastUpdatedOn = Field(DateTime)mfnPriceLastUpdatedOnSc = Field(DateTime)fbaPriceLastUpdatedOnSc = Field(DateTime)suppressMfnPriceUpdate = Field(Boolean)suppressFbaPriceUpdate = Field(Boolean)taxCode = Field(String(255))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class PageViewEvents(Entity):id = Field(Integer, primary_key=True, autoincrement=True)catalogId = Field(Integer,index=True)url = Field(String(255),index=True)sellingPrice = Field(Float)comingSoon = Field(Boolean)ip = Field(String(255))sessionId = Field(String(255))eventTimestamp = Field(DateTime,index=True)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class CartEvents(Entity):id = Field(Integer, primary_key=True, autoincrement=True)catalogId = Field(Integer,index=True)itemId = Field(Integer,index=True)sellingPrice = Field(Float)inStock = Field(Boolean)comingSoon = Field(Boolean)ip = Field(String(255))sessionId = Field(String(255))eventTimestamp = Field(DateTime,index=True)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class EbayItem(Entity):ebayListingId = Field(String(32), primary_key=True)itemId = Field(Integer, primary_key=True, autoincrement = False)listingName = Field(String(255))listingPrice = Field(Float)listingExpiryDate = Field(DateTime)subsidy = Field(Float)defaultWarehouseId = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class SnapdealItem(Entity):item_id = Field(Integer, primary_key=True, autoincrement = False)exceptionPrice = Field(Float)warehouseId = Field(Integer)transferPrice = Field(Float)sellingPrice = Field(Float)courierCost = Field(Float)commission = Field(Float)serviceTax = Field(Float)updatedOn = Field(DateTime)maxNlc = Field(Float)skuAtSnapdeal = Field(String(255))isListedOnSnapdeal = Field(Boolean)suppressPriceFeed = Field(Boolean)suppressInventoryFeed = Field(Boolean)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class SnapdealItemUpdateHistory(Entity):id = Field(Integer, primary_key=True, autoincrement = True)item_id = Field(Integer)isListedOnSnapdeal = Field(Boolean)exceptionPrice = Field(Float)warehouseId = Field(Integer)transferPrice = Field(Float)sellingPrice = Field(Float)courierCost = Field(Float)commission = Field(Float)serviceTax = Field(Float)suppressPriceFeed = Field(Boolean)suppressInventoryFeed = Field(Boolean)maxNlc = Field(Float)skuAtSnapdeal = Field(String(255))updatedOn = Field(DateTime)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")def initialize(dbname='catalog', db_hostname="localhost"):#metadata.bind = "sqlite:///inventory-new.sqlite" #need to read it from configserver.#metadata.bind = 'mysql://root:shop2020@localhost/catalog'cengine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)metadata.bind = cenginemetadata.bind.echo = Truesetup_all(True)if __name__=="__main__":initialize()