Subversion Repositories SmartDukaan

Rev

Rev 21093 | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 13-Sep-2010

@author: rajveer
'''

from sqlalchemy import create_engine
from elixir import *
import datetime
import elixir

class Provider(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    name = Field(String(100))
    pickup = Field(Integer)
    isActive = Field(Boolean)
    details = OneToMany("ProviderDetails")
    bundleWeightLimit = Field(Float)
    groupShipmentAllowed = Field(Boolean)
    maxCodLimit = Field(Float)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class ProviderDetails(Entity):
    provider = ManyToOne("Provider", primary_key=True)
    type = Field(Integer, primary_key=True, autoincrement=False)
    logisticLocation = Field(Integer, primary_key=True, autoincrement=False)
    accountNo = Field(String(10))
    email = Field(String(100))
    phone = Field(String(15))
    active = Field(Boolean)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Awb(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    awb_number = Field(String(100))
    provider = ManyToOne("Provider")
    is_available = Field(Boolean)
    type = Field(String(50))
    awbUsedFor = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class AwbUpdate(Entity):
    providerId = Field(Integer, primary_key=True, autoincrement=False)
    awbNumber = Field(String(50), primary_key=True, autoincrement=False)
    location = Field(String(50), primary_key=True, autoincrement=False)
    date = Field(DateTime, primary_key=True, autoincrement=False)
    status = Field(String(100), primary_key=True, autoincrement=False)
    description = Field(String(100), primary_key=True, autoincrement=False)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class WarehouseAllocation(Entity):
    pincode = Field(String(6), primary_key=True)
    primary_warehouse_location = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class ServiceableLocationDetails(Entity):
    provider = ManyToOne("Provider", primary_key=True)
    dest_pincode = Field(String(6), primary_key=True)
    dest_code = Field(String(10))
    exp = Field(Boolean)
    cod = Field(Boolean)
    station_type = Field(Integer)
    otgAvailable = Field(Boolean, default=0, server_default="0")
    providerCodLimit = Field(Integer)
    websiteCodLimit = Field(Integer)
    storeCodLimit = Field(Integer)
    providerPrepaidLimit = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class DeliveryEstimate(Entity):
    destination_pin = Field(String(6), primary_key=True)
    provider = ManyToOne("Provider", primary_key=True)
    warehouse_location = Field(Integer, primary_key=True, autoincrement=False)
    delivery_time = Field(Integer)
    delivery_delay = Field(Integer, default=0, server_default="0")
    providerZoneCode = Field(String(20))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class PublicHolidays(Entity):
    date = Field(Date, primary_key=True)
    occasion = Field(String(100))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Locations(Entity):
    id = Field(Integer, primary_key=True)
    state_id = Field(Integer)
    label = Field(String(50))
    description = Field(String(100))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
 
class PickupStore(Entity):
    id = Field(Integer, primary_key=True)
    hotspotId = Field(String(3))
    name = Field(String(100))
    line_1 = Field(String(100))
    line_2 = Field(String(100))
    city = Field(String(100))
    state = Field(String(100))
    pin = Field(String(10))
    phone = Field(String(20))
    email = Field(String(100))
    zone = Field(String(30))
    bdm = Field(String(100))
    bdmEmail = Field(String(100))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class ProviderCosting(Entity):
    provider = ManyToOne("Provider", primary_key=True)
    zoneCode = Field(String(20), primary_key=True)
    zoneCodeDescription = Field(String(256))
    initialWeightUpperLimit = Field(Float) 
    initialLogisticsCost = Field(Float)
    additionalUnitWeight = Field(Float)
    additionalUnitLogisticsCost = Field(Float)
    minimumCodCollectionCharges = Field(Float)
    codCollectionFactor = Field(Float, default=0)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class BluedartAttribute(Entity):
    logisticsTransactionId = Field(String(100))
    name = Field(String(100))
    value = Field(String(100))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class PincodeStates(Entity):
    pin = Field(Integer(6), primary_key=True)
    statename = Field(String(64))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

def initialize(dbname="logistics",db_hostname="localhost", echoOn=True, setup=True):
    #metadata.bind = "sqlite:///logistics.sqlite" #need to read it from configserver.
    engine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
    metadata.bind = engine
    metadata.bind.echo = echoOn
    setup_all(setup)

if __name__=="__main__":
    initialize()