Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

from elixir import *
from shop2020.model.v1.catalog.impl.DataService import Item, Category
from shop2020.model.v1.catalog.impl import DataService
from shop2020.config.client.ConfigClient import ConfigClient
from shop2020.clients.InventoryClient import InventoryClient
from shop2020.model.v1.catalog.script import AmazonAsyncScraper
import xlwt
from datetime import datetime
import time

config_client = ConfigClient()
host = config_client.get_property('staging_hostname')

amScraper = AmazonAsyncScraper.Products("AKIAII3SGRXBJDPCHSGQ", "B92xTbNBTYygbGs98w01nFQUhbec1pNCkCsKVfpg", "AF6E3O0VE0X4D")
DataService.initialize(db_hostname=host)


def writeReport():
    maxNodeLength = 0
    countItems = 0
    sheet_iterator = 1
    wbk = xlwt.Workbook(encoding="UTF-8")
    sheet = wbk.add_sheet('Browsing Nodes')
    xstr = lambda s: s or ""
    heading_xf = xlwt.easyxf('font: bold on; align: wrap off, vert centre, horiz center')
    excel_integer_format = '0'
    integer_style = xlwt.XFStyle()
    integer_style.num_format_str = excel_integer_format
    inventory_client = InventoryClient().get_client()
    fbaAvailableInventorySnapshot = inventory_client.getAllAvailableAmazonFbaItemInventory()
    for fbaInventoryItem in fbaAvailableInventorySnapshot:
        if fbaInventoryItem.location==0:
            sku = 'FBA'+str(fbaInventoryItem.item_id)
        elif fbaInventoryItem.location==1:
            sku = 'FBB'+str(fbaInventoryItem.item_id)
        else:
            continue
        nodes = amScraper.get_product_category_for_sku('A21TJRUUN4KGV', sku)
        countItems+=1
        if countItems > 10:
            time.sleep(10)
            countItems = 0
        if maxNodeLength < len(nodes):
            maxNodeLength = len(nodes)
        sheet.write(sheet_iterator, 0, sku[3:])
        sheet.write(sheet_iterator, 1, sku)
        try:
            it = Item.query.filter_by(id=fbaInventoryItem.item_id).one()
            category = Category.query.filter_by(id=it.category).one()
            parent_category = Category.query.filter_by(id=category.parent_category_id).first()
            sheet.write(sheet_iterator, 2, xstr(it.brand)+" "+xstr(it.model_name)+" "+xstr(it.model_number)+" "+xstr(it.color))
            sheet.write(sheet_iterator, 3, parent_category.display_name)
        except:
            pass
        row_iterator = 3
        for node in nodes:
            row_iterator+=1
            sheet.write(sheet_iterator, row_iterator, getNodeValue(node))
        sheet_iterator+=1
    writeheaders(sheet,heading_xf,maxNodeLength)
    filename = "/tmp/browsing-node"+str(datetime.now())+".xls"
    wbk.save(filename)
        
        
def getNodeValue(node):
    x = ""
    for eachNode in node:
        x+=eachNode+'>'
    return x[:-1]
        
def writeheaders(sheet,heading_xf,maxNodeLength):
    sheet.write(0, 0, "Item Id", heading_xf)
    sheet.write(0, 1, "Amazon Sku", heading_xf)
    sheet.write(0, 2, "Product Name", heading_xf)
    sheet.write(0, 3, "Category", heading_xf)
    for node_header in range(maxNodeLength):
        sheet.write(0, node_header+4, "Browsing Node "+str(node_header+1), heading_xf)

def main():
    writeReport()
    

if __name__=='__main__':
    main()