def j_result_code(self, _content): shopstatus = None t_store_configuration_file_obj = t_store_configuration_file( self.db_conn) t_online_info_wish_obj = t_online_info_wish(self.db_conn) # 刷新一下token 1015 :问令牌过期 4000:权存取 1016:失效 if _content['code'] == 1001: # 数据缺失 shopstatus = 'Missing Parameter' if _content['code'] == 1015: # self.RefreshToken() shopstatus = 'Access Token Expired' if _content['code'] == 1016: # 店铺被关 授权吊销 shopstatus = 'Access Token Revoked' if _content['code'] == 1017: shopstatus = 'Authorization Code Expired' if _content['code'] == 1018: shopstatus = 'Access Token Redeemed' if _content['code'] == 4000: shopstatus = 'Unauthorized Access' if _content['code'] == 9000: shopstatus = 'Unknown' if _content['code'] == 2000: shopstatus = '-1' # 账户状态异常 t_store_configuration_file_obj.update_shopStatus( shopstatus, self.t_api_scheduleImp.auth_info['ShopName']) t_online_info_wish_obj.UpdateWishSNameByShopName( self.t_api_scheduleImp.auth_info['ShopName'], shopstatus) if _content['code'] == 1004: shopstatus = 'Product Removed.' if _content['code'] == 1028: shopstatus = '' return shopstatus
def block_search_cata_nav(self, context, nodes): current_shop = self.request.GET.get('ShopName') navigation = {} # 类导航栏显示 remark_all = '' search_hidden = '' search_hidden_id = 0 if not current_shop: current_shop = '全部' elif current_shop: current_shop = current_shop[:8] # 查询当前店铺状态 t_config_amazon_shop_status_obj = t_config_amazon_shop_status( connection) remark_all = t_config_amazon_shop_status_obj.get_shop_status( current_shop) # 通过配置表t_sys_param 配置站点 if current_shop: t_config_online_amazon_obj = t_config_online_amazon(connection) sitesrc = t_config_online_amazon_obj.getSitebyShopName( current_shop) if sitesrc['code'] == 0: searchSite = self.request.GET.get('searchSite') searchSite_id = 0 Site_conf = {} for site in sitesrc['data']: if site[0]: t_sys_param_objs = t_sys_param.objects.filter( TypeDesc='ChoiceSiteconfiguration').filter( V=site[0]) Site_conf[0] = {'ALL': '全部'} for obj in t_sys_param_objs: Site_conf[obj.Seq] = {obj.V: obj.VDesc} Siteconfiguration_Sorted = sorted(Site_conf.items(), key=lambda asd: asd[0], reverse=False) k = 0 Siteconfiguration = {} for u in Siteconfiguration_Sorted: Siteconfiguration[k] = u[1] if searchSite == tuple(u[1])[0]: searchSite_id = k searchSite = u[1][tuple(u[1])[0]] # 显示为中文 k += 1 if not searchSite: searchSite = '全部' elif not current_shop: searchSite = self.request.GET.get('searchSite') searchSite_id = 0 Site_conf = {} t_sys_param_objs = t_sys_param.objects.filter( TypeDesc='ChoiceSiteconfiguration') for obj in t_sys_param_objs: # Site_conf[obj.Seq] = obj.VDesc Site_conf[obj.Seq] = {obj.V: obj.VDesc} Siteconfiguration_Sorted = sorted(Site_conf.items(), key=lambda asd: asd[0], reverse=False) k = 0 Siteconfiguration = {} for u in Siteconfiguration_Sorted: Siteconfiguration[k] = u[1] if searchSite == tuple(u[1])[0]: searchSite_id = k searchSite = u[1][tuple(u[1])[0]] #显示为中文 k += 1 if not searchSite: searchSite = '全部' def get_config_result(params): config_list = [] for param in params: forms = self.request.GET.get(param['parameter']) configuration_Sorted = sorted(param['config'].items(), key=lambda asd: asd[0], reverse=False) configuration = {} forms_id = 0 form = '' gcr = 0 for cfs in configuration_Sorted: configuration[gcr] = cfs[1] if forms == tuple(cfs[1])[0]: forms_id = gcr form = cfs[1][tuple(cfs[1])[0]] # 显示为中文 gcr += 1 if form: navigation[param['desc']] = form config_list.append({ 'forms_id': forms_id, 'configuration': configuration, 'parameter': param['parameter'], 'desc': param['desc'] }) return config_list params = [ { 'parameter': 'status3333333333', 'config': { 0: { '': '全部' }, 1: { 'Active': 'Active' }, 2: { 'Completed': 'Completed' }, }, 'desc': '商品状态', }, ] config_list = get_config_result(params) t_store_configuration_file_obj = t_store_configuration_file(connection) resultdata = '' if self.request.user.is_superuser: resultdata = t_store_configuration_file_obj.find_shopnames() if not self.request.user.is_superuser: username = self.request.user.first_name resultdata = t_store_configuration_file_obj.find_shopname_by_name( username=username) sn_list = ['全部'] if resultdata['code'] == 0: for data in resultdata['data']: if 'AMZ' in data[0]: sn_list.append(data[0]) some_sn = sn_list[:3] # 类导航栏显示 # navigation = {} if current_shop: navigation['店铺'] = current_shop if searchSite: navigation['站点'] = searchSite synTypeDict = { 0: { 'all': '广告同步' }, } # 配置同步类型 nodes.append( loader.render_to_string( 't_amazon_cpc_ad_plugin.html', { 'ShopNames': sn_list, 'Some_SNS': some_sn, 'current_shop': current_shop, 'search_hidden': search_hidden, 'search_hidden_id': search_hidden_id, 'searchSite_id': searchSite_id, 'searchSite': searchSite, 'Siteconfiguration': Siteconfiguration, 'navigation': navigation, 'synTypeDict': synTypeDict, }))
from brick.table.t_store_configuration_file import t_store_configuration_file from aliapp.models import * """ @desc: @author: yewangping @site: @software: PyCharm @file: t_erp_aliexpress_online_info_delete_Admin.py @time: 2018/7/11 16:27 """ redis_conn = get_redis_connection(alias='product') classshopskuobjs = classshopsku(connection, redis_conn) py_SynRedis_tables_obj = py_SynRedis_tables() py_redis_ali_sku_obj = py_redis_ali_sku() t_store_configuration_file_obj = t_store_configuration_file(connection) classshopsku_obj = classshopsku(connection) class t_erp_aliexpress_online_info_delete_Admin(object): site_left_menu_tree_flag_ali = True list_per_page = 20 def status(self, product_status, revoked): if revoked not in ('1', u'1', 1): if product_status == 'onSelling': #offline rt = '<div title="在售" style="float:left;width: 20px;height: 20px;background-color: #66FF66;text-align: center;line-height: 20px;border-radius: 4px">售</div>' elif product_status == 'offline': rt = '<div title="已下架" style="float:left;width: 20px;height: 20px;background-color: #FFCC33;text-align: center;line-height: 20px;border-radius: 4px">下</div>' elif product_status == 'auditing': rt = '<div title="审核中" style="float:left;width: 20px;height: 20px;background-color: #FFCC33;text-align: center;line-height: 20px;border-radius: 4px">审</div>'
def GetListOrders2(self): refreshdict = {'ShopName': '', 'ProductID': [], 'record': {}} record = {} pageurl = '' prolist = [] shopstatus = None while True: if pageurl == '': print '--------------' + pageurl url_List_all_Orders = "https://merchant.wish.com/api/v2/order/multi-get" data = { 'access_token': self.t_api_scheduleImp.auth_info['access_token'], 'format': 'json', 'limit': '500', "fbw_included": "true", } if self.flag == 1: record = self.getSinceV2(data, 'Order') print 'data=%s' % data dict_ret = requests.get(url_List_all_Orders, params=data, timeout=30) _content = eval(dict_ret._content) if dict_ret.status_code == 200 and _content['code'] == 0: prolist = prolist + _content['data'] t_store_configuration_file_obj = t_store_configuration_file( self.db_conn) t_store_configuration_file_obj.update_shopStatus( '0', self.t_api_scheduleImp.auth_info['ShopName']) t_online_info_wish_obj = t_online_info_wish(self.db_conn) t_online_info_wish_obj.UpdateWishSNameByShopName( self.t_api_scheduleImp.auth_info['ShopName'], '0') if _content.has_key( 'paging') and _content['paging'].has_key('next'): pageurl = _content['paging']['next'].replace('\\', '') else: self.t_api_scheduleImp.cnxn.commit() self.OneCmdRecoreDict['Status'] = '2' self.OneCmdRecoreDict[ 'ActualEndTime'] = datetime.datetime.now() self.t_api_scheduleImp.moveOneCmd( self.OneCmdRecoreDict) break else: shopstatus = self.j_result_code(_content) self.OneCmdRecoreDict[ 'ActualEndTime'] = datetime.datetime.now() self.OneCmdRecoreDict['TransactionID'] = '' self.t_api_scheduleImp.refreshScheduleTimeAndTimedelta( self.OneCmdRecoreDict) self.t_api_scheduleImp.updateOneCmd(self.OneCmdRecoreDict) break else: paging_bytes = None print '--------------' + pageurl try: paging_req = urllib2.Request(pageurl) paging_bytes = urllib2.urlopen(paging_req, timeout=60).read() except Exception, ex: prolist = [] record = {} self.OneCmdRecoreDict['Status'] = 'Exception' self.OneCmdRecoreDict[ 'ActualEndTime'] = datetime.datetime.now() self.OneCmdRecoreDict[ 'errorinfo'] = '%s F_EXE_API_WISH except Exception= %s ex=%s __LINE__=%s' % ( time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), Exception, ex, sys._getframe().f_lineno) self.t_api_scheduleImp.moveOneCmd(self.OneCmdRecoreDict) break if paging_bytes is not None: paging_bytes_dict = eval(paging_bytes) prolist = prolist + paging_bytes_dict['data'] if paging_bytes_dict.has_key( 'paging') and paging_bytes_dict['paging'].has_key( 'next'): if len(paging_bytes_dict['paging']['next']) <= 10: break else: pageurl = paging_bytes_dict['paging'][ 'next'].replace('\\', '') else: break else: break
def Wish_Data_Syn(list, synname=''): sresult = {'Code': 0, 'messages': ''} try: shopname = list[0] productid = list[1] parentsku = list[2] upstatus = 'over' # 日志 状态 更新 uptext = None t_store_configuration_file_obj = t_store_configuration_file(connection) t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( shopname) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' # listing 店铺状态标记 cwishapi_obj = cwishapi() classlisting_obj = classlisting(db_conn=connection, redis_conn=redis_coon) t_online_info_obj = t_online_info(shopname, connection, redis_coon) params = CreateParam(shopname, productid, parentsku) result = cwishapi_obj.update_wish_goods_data(param=params, timeout=30) _content = eval(result._content) if result.status_code == 200 and _content['code'] == 0: # api 调用成功 t_online_info_obj.insertWishV2([_content.get('data', []) ]) # 更新到t_online_info toResult = ToCalculateADS(productid, shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 sresult['messages'] = u'%s:同步成功' % (productid, ) else: # 调用失败 if _content.get('code') in [1000, 1028, 1006, 1031]: # toResult = ToCalculateADS(productid, shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' upstatus = 'error' uptext = business_Terms(_content) # 更新下 redis中shopskulist classlisting_db = classlisting(db_conn=connection) all_shopsku = classlisting_db.getShopSKUList(productid) classlisting_obj.setShopSKUList(productid, '|'.join(all_shopsku)) sresult['messages'] = u'%s:%s' % (productid, business_Terms(_content)) refreshwishlisting.run({ 'ShopName': shopname, 'dbcnxn': connection, 'ProductID': productid }) # Wish数据更新操作 adResult = t_online_info_wish_obj.UpdateWishStatusAD( productid, toResult) # listing assert adResult['errorcode'] == 1, adResult['errortext'] else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' sresult['messages'] = u'%s:%s' % (productid, uptext) SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( shopname, snstatus) # listing assert SNResult['errorcode'] == 1, SNResult['errortext'] uResult = t_wish_store_oplogs_obj.updateStatusP( synname, productid, upstatus, uptext) # 更新日志表状态 assert uResult['errorcode'] == 0, uResult['errortext'] sresult['Code'] = 1 except Exception, e: sresult['Code'] = -1 sresult['messages'] = '%s:%s;%s' % (Exception, e, traceback.format_exc())
def OnTheShelf_OR_LowerFrame_BY_ShopSKU(shopsku, shopname, flag, flagname=''): myresult = {'Code': 0, 'messages': ''} try: upstatus = 'over' # 日志 uptext = None t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_store_configuration_file_obj = t_store_configuration_file(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( shopname) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' # 店铺状态 classshopsku_obj = classshopsku(redis_conn=redis_coon, shopname=shopname) cwishapi_obj = cwishapi() t_online_info_obj = t_online_info(shopname, connection) auth_info = verb_token(shopname, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] data = {} data['access_token'] = auth_info.get('access_token', '') data['ShopSKU'] = shopsku proinfo = t_online_info_obj.get_listingid_by_shopname_shopsku( shopsku) assert proinfo[ 'errorcode'] == 0, 'EDGetProductIDSuccess:%s' % proinfo[ 'errortext'] if flag == 'enshopsku': # ShopSKU上架 sstatus = 'Enabled' result = cwishapi_obj.update_to_enable(data, timeout=30) else: sstatus = 'Disabled' result = cwishapi_obj.update_to_disable(data, timeout=30) _content = eval(result._content) if result.status_code == 200 and _content['code'] == 0: uResult = t_online_info_obj.update_status_by_shopsku( sstatus, shopsku) # 更新shopsku状态数据 assert uResult[ 'errorcode'] == 0, 'EDSuccess:%s' % uResult['errortext'] classshopsku_obj.setStatus(shopsku, sstatus) # 修改redis数据 toResult = ToCalculateADS(proinfo['productid'], shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 if flag == 'enshopsku': # ShopSKU上架 myresult['messages'] = u'%s:上架成功' % (shopsku, ) else: myresult['messages'] = u'%s:下架成功' % (shopsku, ) else: if _content.get('code') in [1000, 1028, 1006, 1031]: # 平台禁止修改加钻产品标题 toResult = ToCalculateADS(proinfo['productid'], shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' upstatus = 'error' # 日志 uptext = business_Terms(_content) myresult['messages'] = u'%s:上下架操作失败!%s' % ( shopsku, business_Terms(_content)) refreshwishlisting.run({ 'ShopName': shopname, 'dbcnxn': connection, 'ProductID': proinfo['productid'] }) # Wish数据更新操作 adResult = t_online_info_wish_obj.UpdateWishStatusAD( proinfo['productid'], toResult) assert adResult['errorcode'] == 1, adResult['errortext'] myresult['_content'] = _content else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' myresult['_content'] = uptext myresult['messages'] = u'%s:上下架操作失败!%s' % (shopsku, uptext) uPResult = t_wish_store_oplogs_obj.updateStatusP( flagname, shopsku, upstatus, uptext) assert uPResult['errorcode'] == 0, uPResult['errortext'] SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( shopname, snstatus) # shopname assert SNResult['errorcode'] == 1, SNResult['errortext'] myresult['Code'] = 1 except Exception, e: myresult['Code'] = -1 myresult['messages'] = '%s:%s:%s' % (shopsku, Exception, e)
def edit_GoodsInformation_by_ID(datadict, ShopName, flagname): myresult = {'Code': 0, 'messages': ''} try: uptext = None upstatus = 'over' # 日志 t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_store_configuration_file_obj = t_store_configuration_file(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( ShopName) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' cwishapi_obj = cwishapi() auth_info = verb_token(ShopName, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] datadict['access_token'] = auth_info.get('access_token', '') datadict['format'] = 'json' if datadict.get('main_image'): # 主图发生改变 mainimage = datadict['main_image'].keys()[0] if datadict['main_image'][mainimage] == '1': # 本地上传图片 mResult = wish_image_upload(mainimage, auth_info) assert mResult['errorcode'] == 1, mResult['errortext'] datadict['main_image'] = mResult['image_url'] else: datadict['main_image'] = mainimage.replace( '-medium.', '-original.') eImage_list = [] for eImage in datadict.get('extra_images', []): e_pic = eImage.keys()[0] if eImage[e_pic] == '1': evResult = wish_image_upload(e_pic, auth_info) assert evResult['errorcode'] == 1, evResult['errortext'] eImage_list.append(evResult['image_url']) else: eImage_list.append(e_pic.replace('-medium.', '-original.')) if eImage_list: datadict['extra_images'] = '|'.join(eImage_list) logger.info('datadict===============%s' % datadict) rtresult = cwishapi_obj.update_goods_info_by_wish_api(datadict, timeout=30) _content = eval(rtresult._content) if rtresult.status_code == 200 and _content['code'] == 0: toResult = ToCalculateADS(datadict['id'], ShopName, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 myresult['messages'] = u'%s:链接信息修改成功' % (datadict['id'], ) else: if _content.get('code') in [1000, 1028, 1006, 1031]: # 平台禁止修改加钻产品标题 toResult = ToCalculateADS(datadict['id'], ShopName, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' upstatus = 'error' # 日志 uptext = business_Terms(_content) myresult['messages'] = u'%s:链接信息修改失败,%s' % (datadict['id'], uptext) dResult = Wish_Data_Syn([ShopName, datadict['id'], ''], 'syn') assert dResult['Code'] == 1, dResult['messages'] adResult = t_online_info_wish_obj.UpdateWishStatusAD( datadict['id'], toResult) assert adResult['errorcode'] == 1, adResult['errortext'] myresult['_content'] = _content else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' myresult['_content'] = uptext myresult['messages'] = u'%s:链接信息修改失败,%s' % (datadict['id'], uptext) uResult = t_wish_store_oplogs_obj.updateStatusP( flagname, datadict['id'], upstatus, uptext) assert uResult['errorcode'] == 0, uResult['errortext'] SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( ShopName, snstatus) # shopname assert SNResult['errorcode'] == 1, SNResult['errortext'] myresult['Code'] = 1 except Exception, e: myresult['Code'] = -1 myresult['messages'] = '%s:%s:%s' % (datadict['id'], Exception, e)
def OnTheShelf_OR_LowerFrame(list, flag, synname): sresult = {'Code': 0, 'messages': ''} try: shopname = list[0] productid = list[1] parentsku = list[2] upstatus = 'over' # 日志 uptext = None t_store_configuration_file_obj = t_store_configuration_file(connection) t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( shopname) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' # listing 店铺状态标记 classlisting_obj = classlisting(db_conn=connection, redis_conn=redis_coon) cwishapi_obj = cwishapi() classshopsku_obj = classshopsku(redis_conn=redis_coon, shopname=shopname) t_online_info_obj = t_online_info(shopname, connection, redis_coon) params = CreateParam(shopname, productid, parentsku) if flag == 'enable': Status = 'Enabled' result = cwishapi_obj.enable_by_wish_api(params, timeout=30) else: Status = 'Disabled' result = cwishapi_obj.disable_by_wish_api(params, timeout=30) _content = eval(result._content) if result.status_code == 200 and _content['code'] == 0: aResult = t_online_info_wish_obj.UpdateWishStatus( productid, Status) assert aResult['errorcode'] == 1, aResult['errortext'] iResult = t_online_info_obj.update_status_by_productid( Status, productid) assert iResult[ 'errorcode'] == 0, "SynSuccess:%s" % iResult['errortext'] shopskulist = classlisting_obj.getShopSKUList(productid) if shopskulist is None: shopskulist = [] for shopsku in shopskulist: classshopsku_obj.setStatus(shopsku, Status) toResult = ToCalculateADS(productid, shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 if flag == 'enable': sresult['messages'] = u'%s:上架成功' % (productid, ) else: sresult['messages'] = u'%s:下架成功' % (productid, ) else: if _content.get('code') in [1000, 1028, 1006, 1031]: # 平台禁止修改加钻产品标题 toResult = ToCalculateADS(productid, shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' # 单链接操作状态 upstatus = 'error' uptext = business_Terms(_content) sresult['messages'] = u'%s:%s' % (productid, business_Terms(_content)) refreshwishlisting.run({ 'ShopName': shopname, 'dbcnxn': connection, 'ProductID': productid }) # Wish数据更新操作 adResult = t_online_info_wish_obj.UpdateWishStatusAD( productid, toResult) assert adResult['errorcode'] == 1, adResult['errortext'] else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' sresult['messages'] = u'%s:%s' % (productid, uptext) uResult = t_wish_store_oplogs_obj.updateStatusP( synname, productid, upstatus, uptext) assert uResult['errorcode'] == 0, uResult['errortext'] SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( shopname, snstatus) # listing assert SNResult['errorcode'] == 1, SNResult['errortext'] sresult['Code'] = 1 except Exception, e: sresult['Code'] = -1 sresult['messages'] = '%s:%s' % (Exception, e)
def block_search_cata_nav(self, context, nodes): current_shop = self.request.GET.get('ShopName') navigation = {} # 类导航栏显示 remark_all = '' search_hidden = '' search_hidden_id = 0 if not current_shop: current_shop = '' elif current_shop: current_shop = current_shop[:8] # 查询当前店铺状态 t_config_amazon_shop_status_obj = t_config_amazon_shop_status( connection) remark_all = t_config_amazon_shop_status_obj.get_shop_status( current_shop) if self.request.GET.get('shopname', '') != '': flag = self.request.GET.get('shopname', '') else: flag = '' if flag.find('AMZ-') == -1: flag = 'AMZ-' + flag.zfill(4) # 搜索类型配置 searchType_config = { 0: { 'Title': '标题' }, 1: { 'seller_sku': 'seller_sku' }, 2: { 'asin1': 'asin1' }, } searchType_config_Sorted = sorted(searchType_config.items(), key=lambda asd: asd[0], reverse=False) Typeconfiguration = {} t = 0 for type in searchType_config_Sorted: Typeconfiguration[t] = type[1] searchType = self.request.GET.get(str(tuple(type[1])[0])) if searchType: # str(tuple(type[1])[0]) # 具体搜索类型 search_hidden = searchType #值 search_hidden_id = t navigation[str(type[1][tuple(type[1])[0]])] = search_hidden t += 1 # 通过配置表t_sys_param 配置站点 if current_shop: t_config_online_amazon_obj = t_config_online_amazon(connection) sitesrc = t_config_online_amazon_obj.getSitebyShopName( current_shop) if sitesrc['code'] == 0: searchSite = self.request.GET.get('searchSite') searchSite_id = 0 Site_conf = {} for site in sitesrc['data']: if site[0]: t_sys_param_objs = t_sys_param.objects.filter( TypeDesc='ChoiceSiteconfiguration').filter( V=site[0]) Site_conf[0] = {'ALL': '全部'} for obj in t_sys_param_objs: Site_conf[obj.Seq] = {obj.V: obj.VDesc} Siteconfiguration_Sorted = sorted(Site_conf.items(), key=lambda asd: asd[0], reverse=False) k = 0 Siteconfiguration = {} for u in Siteconfiguration_Sorted: Siteconfiguration[k] = u[1] if searchSite == tuple(u[1])[0]: searchSite_id = k searchSite = u[1][tuple(u[1])[0]] # 显示为中文 k += 1 if not searchSite: searchSite = '全部' elif not current_shop: searchSite = self.request.GET.get('searchSite') searchSite_id = 0 Site_conf = {} t_sys_param_objs = t_sys_param.objects.filter( TypeDesc='ChoiceSiteconfiguration') for obj in t_sys_param_objs: # Site_conf[obj.Seq] = obj.VDesc Site_conf[obj.Seq] = {obj.V: obj.VDesc} Siteconfiguration_Sorted = sorted(Site_conf.items(), key=lambda asd: asd[0], reverse=False) k = 0 Siteconfiguration = {} for u in Siteconfiguration_Sorted: Siteconfiguration[k] = u[1] if searchSite == tuple(u[1])[0]: searchSite_id = k searchSite = u[1][tuple(u[1])[0]] #显示为中文 k += 1 if not searchSite: searchSite = '全部' # 配置多属性 selling_config = {0: {'ALL': '全部'}, 1: {'0': '单品'}, 2: {'1': '多属性'}} sellingforms = self.request.GET.get('sellingforms') sellingconfiguration_Sorted = sorted(selling_config.items(), key=lambda asd: asd[0], reverse=False) sellingconfiguration = {} setsellingforms_id = 0 sellingform = '' s = 0 for sell in sellingconfiguration_Sorted: sellingconfiguration[s] = sell[1] if sellingforms == tuple(sell[1])[0]: setsellingforms_id = s # sellingform = sell[1][tuple(sell[1])[0]] # 显示为中文 s += 1 if not sellingforms: sellingform = 'ALL' priceLift = self.request.GET.get('priceLift') priceRight = self.request.GET.get('priceRight') quantityLeft = self.request.GET.get('quantityLeft') quantityRight = self.request.GET.get('quantityRight') brandId = self.request.GET.get('brandId') manufacturerId = self.request.GET.get('manufacturerId') shipType = self.request.GET.get('shipType') if not priceLift: priceLift = '' if not priceRight: priceRight = '' if not quantityLeft: quantityLeft = '' if not quantityRight: quantityRight = '' if not brandId: brandId = '' if not manufacturerId: manufacturerId = '' if not shipType: shipType = 'ALL' updatetime_str = self.request.GET.get('updatetime_str') updatetime_end = self.request.GET.get('updatetime_end') createtime_str = self.request.GET.get('createtime_str') createtime_end = self.request.GET.get('createtime_end') time_type = 0 timeLift = '' timeRight = '' if updatetime_str or updatetime_end: time_type = 0 timeLift = updatetime_str timeRight = updatetime_end if createtime_str or createtime_end: time_type = 1 timeLift = createtime_str timeRight = createtime_end if not timeLift: timeLift = '' if not timeRight: timeRight = '' open_flag = '' if priceLift or priceRight or quantityLeft or quantityRight or brandId or manufacturerId or timeLift or timeRight or shipType != 'ALL': open_flag = '(详细)' t_store_configuration_file_obj = t_store_configuration_file(connection) resultdata = '' if self.request.user.is_superuser: resultdata = t_store_configuration_file_obj.find_shopnames() if not self.request.user.is_superuser: username = self.request.user.first_name resultdata = t_store_configuration_file_obj.find_shopname_by_name( username=username) sn_list = [] if resultdata['code'] == 0: for data in resultdata['data']: if 'AMZ' in data[0]: sn_list.append(data[0]) some_sn = sn_list[:3] # 类导航栏显示 # navigation = {} if current_shop: navigation['店铺'] = current_shop if searchSite: navigation['站点'] = searchSite if sellingforms: navigation['售卖形式'] = sellingforms if priceLift or priceRight: navigation['价格'] = priceLift + ' ~ ' + priceRight if quantityLeft or quantityRight: navigation['库存'] = quantityLeft + ' ~ ' + quantityRight if shipType: navigation['运输方式'] = shipType if brandId: navigation['品牌'] = brandId if manufacturerId: navigation['制造商'] = manufacturerId if (timeLift or timeRight) and time_type == 0: navigation['更新时间'] = timeLift + ' ~ ' + timeRight elif (timeLift or timeRight) and time_type == 1: navigation['创建时间'] = timeLift + ' ~ ' + timeRight createProductURL = '/Project/admin/skuapp/t_templet_amazon_collection_box/add/' # 创建产品 currentURL = '/Project/admin/skuapp/t_online_info_amazon_listing/' #当前URL taskURL = '/t_online_info_amazon_listing_syn_shopname/' #执行任务 completeURL = '/t_online_info_amazon_listing_complete_shopname/' #进度URL synTypeDict = {0: {'all': '全量同步'}, 1: {'synpro': '选中同步'}} # 配置同步类型 platform_flg = 'AMZON' # 平台 pdURL = '/load_amazon_products/' # 上下架URL isHideSite = '' # isHideSite = 'none' 不显示站点 # searchSite_id = '' # searchSite = '' # Siteconfiguration = {'':{'':''}} buttonlist = [] if self.request.user.is_superuser: objs = store_config_table.objects.filter( ShopName__startswith='AMZ-').values('ShopName') else: allobj = User.objects.filter(groups__id__in=[38]) userID = [] for each in allobj: userID.append(each.id) if (self.request.user.id in userID): objs = store_config_table.objects.filter( ShopName__startswith='AMZ-').values('ShopName') else: objs = store_config_table.objects.filter( Q(Seller=context['user'].first_name) | Q(Published=context['user'].first_name) | Q(Operators=context['user'].first_name)).values( 'ShopName') for obj in objs: buttonlist.append(obj['ShopName']) buttonlist.sort() activeflag = self.request.GET.get('_p_is_fba', '') nowurl = self.request.get_full_path().replace( '_p_is_fba=0', '').replace('_p_is_fba=1', '').replace('?&', '?').replace('&&', '&') if nowurl[-1:] in ['?', '&']: nowurl = nowurl[:-1] if nowurl.find('?') == -1: nowurl = nowurl + '?' else: nowurl = nowurl + '&' nodes.append( loader.render_to_string( 't_online_info_amazon_listing_plugin.html', { 'ShopNames': sn_list, 'Some_SNS': some_sn, 'current_shop': current_shop, 'search_hidden': search_hidden, 'search_hidden_id': search_hidden_id, 'searchSite_id': searchSite_id, 'searchSite': searchSite, 'setsellingforms_id': setsellingforms_id, 'sellingform': sellingform, 'priceLift': priceLift, 'priceRight': priceRight, 'quantityLeft': quantityLeft, 'quantityRight': quantityRight, 'brandId': brandId, 'manufacturerId': manufacturerId, 'shipType': shipType, 'time_type': time_type, 'timeLift': timeLift, 'timeRight': timeRight, 'open_flag': open_flag, 'Siteconfiguration': Siteconfiguration, 'remark_all': remark_all, 'navigation': navigation, 'Typeconfiguration': Typeconfiguration, 'Sellingconfiguration': sellingconfiguration, 'createProductURL': createProductURL, 'currentURL': currentURL, 'taskURL': taskURL, 'completeURL': completeURL, 'pdURL': pdURL, 'synTypeDict': synTypeDict, 'platform_flg': platform_flg, 'isHideSite': isHideSite, 'objs': json.dumps(buttonlist), 'flag': flag, 'nowurl': nowurl, 'activeflag': activeflag }))
def insertJoomV2(self, data): refreshdict = {} refreshdict['ShopName'] = '' prolist = [] cursor = self.cnxn.cursor() # classlisting_obj = classlisting(db_conn=self.cnxn, redis_conn=self.redis_conn) # classshopsku_obj = classshopsku(db_conn=self.cnxn, redis_conn=self.redis_conn) # classsku_obj = classsku(db_cnxn=self.cnxn, redis_cnxn=self.redis_conn) t_store_configuration_file_obj = t_store_configuration_file(self.cnxn) for row in data: ProductID = row['Product'].get('id') prolist.append(ProductID) is_promoted = row['Product'].get('is_promoted', '') # classlisting_obj.set_is_promoted_listingid(ProductID, is_promoted) JoomExpress = '%s' % row['Product'].get( 'joom_express_country_codes', '[]') # classlisting_obj.set_JoomExpress_listingid(ProductID, JoomExpress) ProductName = row['Product'].get('name') OfJoomes = row['Product'].get('number_saves') OfSales = row['Product'].get('number_sold') ParentSKU = row['Product'].get('parent_sku', '').replace( '<', '<').replace('>', '>') ReviewState = row['Product'].get('review_status') ImageURL = row['Product'].get('main_image', '').split(r'?')[0].replace('\\', '') DateUploaded = time.strftime( "%Y-%m-%d", time.strptime(row['Product'].get('date_uploaded'), "%Y-%m-%dT%H:%M:%SZ") ) # row['Product']['date_uploaded'] 2017-11-11T06:41:33Z if row['Product'].get('last_updated'): last_update_time = row['Product'].get('last_updated') else: last_update_time = row['Product'].get('date_uploaded') LastUpdated = time.strftime( "%Y-%m-%dT%H:%M:%S", time.strptime(last_update_time, "%Y-%m-%dT%H:%M:%SZ") ) # row['Product']['last_updated'] 2017-11-11T06:41:33Z ExtraImages = row['Product'].get('extra_images', '').replace('\\', '') Description = row['Product'].get('description') ShopName = self.ShopName.strip() refreshdict['ShopName'] = ShopName PlatformName = 'Joom' Tags_dict = row['Product'].get('tags', '') Title = ProductName DepartmentID, seller, Published = t_store_configuration_file_obj.getinfobyshopcode( ShopName) # 获取该店铺的部门 编号 销售员 刊登人 if seller is None or seller.strip() == '': seller = Published SKU = '' RefreshTime = datetime.datetime.now() Tags = '' for Tag_dict in Tags_dict: if Tags == '': Tags = Tag_dict['Tag'].get('name') else: Tags = '%s,%s' % (Tags, Tag_dict['Tag'].get('name')) shopskulist = [] # 定义ShopSKU列表 filterdict = {} # 用于 存放 需要修改的 商品SKU for variant in row['Product'].get('variants', [{'Variant': None}]): VariationID = variant['Variant'].get('id') ShopSKU = variant['Variant'].get('sku').replace( '<', '<').replace('>', '>').replace('&', '&') # SKU = classshopsku_obj.getSKU(ShopSKU) # 商品SKU get sku_goodsstatus = None # if SKU is not None and SKU.strip() != '': # sku_goodsstatus = classsku_obj.get_goodsstatus_by_sku(SKU) # 获取商品SKU的商品状态 # # 下面是简单的转换 # if sku_goodsstatus == u'正常': # sku_goodsstatus = '1' # elif sku_goodsstatus == u'售完下架': # sku_goodsstatus = '2' # elif sku_goodsstatus == u'临时下架': # sku_goodsstatus = '3' # elif sku_goodsstatus == u'停售': # sku_goodsstatus = '4' ShopSKUImage = '' if 'main_image' in variant['Variant'].keys(): ShopSKUImage = variant['Variant'].get( 'main_image').replace('\\', '') # classshopsku_obj.setImage(ShopSKU, ShopSKUImage) # 变体图 set Price = variant['Variant'].get('price') # classshopsku_obj.setPrice(ShopSKU, Price) # 价格 set Inventory = variant['Variant'].get('inventory') # classshopsku_obj.setQuantity(ShopSKU, Inventory) # 库存 set Status = variant['Variant'].get('enabled', '') # "enabled": "False", Statusssss = Status # classshopsku_obj.setStatus(ShopSKU, Statusssss) # 状态 set if Statusssss == 'True': filterdict[ShopSKU] = 0 Shipping = variant['Variant'].get('shipping') # classshopsku_obj.setShipping(ShopSKU, Shipping) # 运费 set Color = '' if 'color' in variant['Variant'].keys(): Color = variant['Variant'].get('color') # classshopsku_obj.setColor(ShopSKU, Color) # 颜色 set Size = '' if 'size' in variant['Variant'].keys(): Size = variant['Variant'].get('size')[:30] # classshopsku_obj.setSize(ShopSKU, Size) # 尺寸 set msrp = variant['Variant'].get('msrp') # classshopsku_obj.setmsrp(ShopSKU, msrp) # 标签价 set ShippingTime = variant['Variant'].get('shipping_time') # classshopsku_obj.setshippingtime(ShopSKU, ShippingTime) # 运输时间 set # Quantity = Inventory cursor.execute( "SELECT COUNT(ProductID) FROM t_online_info_joom_detail WHERE ProductID=%s AND ShopSKU=%s;", ( ProductID, ShopSKU, )) somecount = cursor.fetchone() if somecount[0] > 0: sql_update = "UPDATE t_online_info_joom_detail SET Title=%s,Price=%s,Quantity=%s,RefreshTime=%s,Image=%s,Status=%s," \ "ReviewState=%s,OfJoomes=%s,OfSales=%s,LastUpdated=%s,Shipping=%s,Color=%s,`Size`=%s,msrp=%s," \ "ShippingTime=%s,ExtraImages=%s,Description=%s,Tags=%s,ShopSKUImage=%s,is_promoted=%s," \ "JoomExpress=%s,seller=%s,Published=%s,GoodsStatus=%s WHERE ProductID=%s AND ShopSKU=%s;" cursor.execute( sql_update, (Title, Price, Inventory, RefreshTime, ImageURL, Statusssss, ReviewState, OfJoomes, OfSales, LastUpdated, Shipping, Color, Size, msrp, ShippingTime, ExtraImages, Description, Tags, ShopSKUImage, is_promoted, JoomExpress, seller, Published, sku_goodsstatus, ProductID, ShopSKU)) else: sql_insert = 'INSERT INTO t_online_info_joom_detail (ShopIP,ShopName,PlatformName,ProductID,Title,' \ 'SKU,ShopSKU,Price,Quantity,RefreshTime,Image,Status,DateUploaded,ParentSKU,' \ 'ReviewState,OfJoomes,OfSales,LastUpdated,Shipping,Color,`Size`,msrp,' \ 'ShippingTime,ExtraImages,VariationID,Description,Tags,' \ 'MainSKU,ShopSKUImage,is_promoted,JoomExpress,DepartmentID,seller,Published,' \ 'GoodsStatus,filtervalue,APIState)' \ ' VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,' \ '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);' cursor.execute( sql_insert, (self.ShopIP, ShopName, PlatformName, ProductID, Title, SKU, ShopSKU, Price, Inventory, RefreshTime, ImageURL, Statusssss, DateUploaded, ParentSKU, ReviewState, OfJoomes, OfSales, LastUpdated, Shipping, Color, Size, msrp, ShippingTime, ExtraImages, VariationID, Description, Tags, '', ShopSKUImage, is_promoted, JoomExpress, DepartmentID, seller, Published, sku_goodsstatus, 1, 'nothing')) cursor.execute('commit;') shopskulist.append(ShopSKU) # classlisting_obj.setShopSKUList(ProductID, '|'.join(shopskulist)) # ProductID ShopSKUList for k, v in filterdict.items(): sql = "UPDATE t_online_info_joom_detail SET filtervalue = 0 WHERE ProductID=%s AND ShopSKU=%s;" cursor.execute(sql, (ProductID, k)) cursor.execute('commit;') params = dict() params['ShopName'] = ShopName params['ShopIP'] = self.ShopIP params['ProductID'] = ProductID params['Seller'] = seller params['dbcnxn'] = self.cnxn self.refresh_joom_listing_run(params) cursor.execute('commit;') cursor.close() refreshdict['ProductID'] = prolist return refreshdict
def insertWishV2(self, data): refreshdict = {} refreshdict['ShopName'] = '' prolist = [] #cnxn = MySQLdb.connect(DATABASES['HOST'],DATABASES['USER'],DATABASES['PASSWORD'],DATABASES['NAME'] ) cursor = self.cnxn.cursor() #ShopIP = socket.gethostbyname(socket.gethostname()) #sql_delete = 'delete from t_online_info where ShopName =\'%s\' '%self.ShopName.strip() #cursor.execute(sql_delete) classlisting_obj = classlisting.classlisting(self.cnxn, self.redis_conn) classshopsku_obj = classshopsku.classshopsku(self.cnxn, self.redis_conn, self.ShopName) # classshopname_obj = classshopname.classshopname(db_conn = self.cnxn) t_store_configuration_file_obj = t_store_configuration_file(self.cnxn) classsku_obj = classsku.classsku(self.cnxn, self.redis_conn) t_event_class_obj = t_event_class() cwishapi_obj = cwishapi() insert_product = [] delete_product = [] update_product = [] # logger = logging.getLogger('sourceDns.webdns.views') for row in data: #print(row) ProductID = row['Product']['id'] # logger.error("ProductID===%s" % (ProductID, )) prolist.append(ProductID) is_promoted = row['Product'].get('is_promoted', '') classlisting_obj.set_is_promoted_listingid(ProductID, is_promoted) WishExpress = '%s' % row['Product'].get( 'wish_express_country_codes', '[]') classlisting_obj.set_WishExpress_listingid(ProductID, WishExpress) ProductName = row['Product']['name'] if '\u' in ProductName: try: ProductName = ProductName.decode("unicode_escape") except: pass OfWishes = row['Product']['number_saves'] OfSales = row['Product']['number_sold'] ParentSKU = row['Product']['parent_sku'].replace( '<', '<').replace('>', '>').replace("'", "'").replace('\\/', '/') if '\u' in ParentSKU: try: ParentSKU = ParentSKU.decode("unicode_escape") except: pass ReviewState = row['Product']['review_status'] #当前 wish查看状态 be_sql = "select DISTINCT ReviewState,BeforeReviewState from t_online_info WHERE ProductID=%s LIMIT 1;" cursor.execute(be_sql, (ProductID, )) beforers = cursor.fetchone() BeforeReviewState = None # 上一个wish查看状态 if beforers and len(beforers) == 2: if ReviewState == 'rejected' and beforers[ 0] == 'rejected' and beforers[1]: BeforeReviewState = beforers[1] elif beforers[0]: BeforeReviewState = beforers[0] ImageURL = row['Product']['main_image'].replace('\\', '') DateUploaded = time.strftime( "%Y-%m-%d", time.strptime( row['Product']['date_uploaded'], "%m-%d-%Y")) # row['Product']['date_uploaded'] 07-01-2017 LastUpdated = time.strftime( "%Y-%m-%dT%H:%M:%S", time.strptime(row['Product']['last_updated'], "%m-%d-%YT%H:%M:%S") ) # row['Product']['last_updated'] 08-03-2017T10:21:09 ExtraImages = row['Product']['extra_images'].replace('\\', '') Description = row['Product']['description'] if '\u' in Description: try: Description = Description.decode("unicode_escape") except: pass ShopName = self.ShopName.strip() refreshdict['ShopName'] = ShopName PlatformName = 'Wish' Tags_dict = row['Product']['tags'] Title = ProductName DepartmentID = t_store_configuration_file_obj.getDepartmentbyshopcode( ShopName) # 获取该店铺的部门编号 seller = t_store_configuration_file_obj.getsellerbyshopcode( ShopName) # 获取该店铺的 销售员 目前没有走redis Published = t_store_configuration_file_obj.getPublishedbyshopcode( ShopName) # 获取该店铺的 刊登人 目前没有走redis if seller is None or seller.strip() == '': seller = Published SKU = '' RefreshTime = datetime.datetime.now() #print RefreshTime Tags = '' for Tag_dict in Tags_dict: if Tags == '': Tags = Tag_dict['Tag']['name'] else: Tags = '%s,%s' % (Tags, Tag_dict['Tag']['name']) # cursor.execute('Delete from t_online_info where ProductID= %s ; ',(ProductID,)) shopskulist = [] # 定义ShopSKU列表 filterdict = {} # 用于 存放 需要修改的 商品SKU vidlist = [] fbw_flag_list = [] # fbw标记列表 for variant in row['Product']['variants']: VariationID = variant['Variant']['id'] # 平台唯一ID vidlist.append(VariationID) shopskutmp = variant['Variant']['sku'].replace( '<', '<').replace('>', '>').replace('&', '&').replace( "'", "'").replace('\\/', '/') # logger.error("shopskutmp===%s" % (shopskutmp, )) if '\u' in shopskutmp: try: shopskutmp = shopskutmp.decode('unicode-escape') except: pass eshopsku = shopskutmp # 刷新fbw标记 fbw_flag = refresh_fbw_flag(product_id=ProductID, shopsku=eshopsku, shopname=ShopName, connection=self.cnxn) fbw_flag_list.append(fbw_flag) SKU = classshopsku_obj.getSKU(eshopsku) # 商品SKU get sku_goodsstatus = None if SKU is not None and SKU.strip() != '': sku_goodsstatus = classsku_obj.get_goodsstatus_by_sku( SKU) # 获取商品SKU的商品状态 # 下面是简单的转换 if sku_goodsstatus == u'正常': sku_goodsstatus = '1' elif sku_goodsstatus == u'售完下架': sku_goodsstatus = '2' elif sku_goodsstatus == u'临时下架': sku_goodsstatus = '3' elif sku_goodsstatus == u'停售': sku_goodsstatus = '4' #print sku_goodsstatus ShopSKUImage = '' if variant['Variant'].has_key('main_image'): ShopSKUImage = variant['Variant']['main_image'].replace( '\\', '') classshopsku_obj.setImage(eshopsku, ShopSKUImage) # 变体图 set Price = variant['Variant']['price'] classshopsku_obj.setPrice(eshopsku, Price) # 价格 set Inventory = variant['Variant']['inventory'] if Inventory == '': Inventory = None classshopsku_obj.setQuantity(eshopsku, Inventory) # 库存 set Status = variant['Variant'].get('enabled', '') # "enabled": "False", if Status.strip() == 'False': Statusssss = 'Disabled' elif Status.strip() == 'True': # True Statusssss = 'Enabled' else: Statusssss = Status classshopsku_obj.setStatus(eshopsku, Statusssss) # 状态 set if Statusssss == 'Enabled': filterdict[SKU] = 0 Shipping = variant['Variant']['shipping'] if Shipping == '': Shipping = None classshopsku_obj.setShipping(eshopsku, Shipping) # 运费 set Color = '' if variant['Variant'].has_key('color'): Color = variant['Variant']['color'].replace('&', '&') # & classshopsku_obj.setColor(eshopsku, Color) # 颜色 set Size = '' if variant['Variant'].has_key('size'): Size = variant['Variant']['size'][:30] classshopsku_obj.setSize(eshopsku, Size) # 尺寸 set msrp = variant['Variant']['msrp'] classshopsku_obj.setmsrp(eshopsku, msrp) # 标签价 set ShippingTime = variant['Variant']['shipping_time'] classshopsku_obj.setshippingtime(eshopsku, ShippingTime) # 运输时间 set # Quantity = Inventory cursor.execute( "select count(VariationID) from t_online_info WHERE ProductID=%s and VariationID=%s;", ( ProductID, VariationID, )) somecount = cursor.fetchone() if somecount[0] > 0: sql_update = "update t_online_info set Title=%s,Price=%s,Quantity=%s,RefreshTime=%s,Image=%s,Status=%s," \ "ReviewState=%s,OfWishes=%s,OfSales=%s,LastUpdated=%s,Shipping=%s,Color=%s,`Size`=%s,msrp=%s," \ "ShippingTime=%s,ExtraImages=%s,Description=%s,Tags=%s,ShopSKUImage=%s,is_promoted=%s," \ "WishExpress=%s,seller=%s,Published=%s,SKU=%s,MainSKU=%s,BeforeReviewState=%s,ShopSKU=%s" \ " WHERE ProductID=%s and VariationID=%s;" cursor.execute( sql_update, (Title, Price, Inventory, RefreshTime, ImageURL, Statusssss, ReviewState, OfWishes, OfSales, LastUpdated, Shipping, Color, Size, msrp, ShippingTime, ExtraImages, Description, Tags, ShopSKUImage, is_promoted, WishExpress, seller, Published, SKU, classsku_obj.get_bemainsku_by_sku(SKU), BeforeReviewState, shopskutmp, ProductID, VariationID)) # if not SKU: update_product.append(ProductID) else: sql_insert = 'INSERT INTO t_online_info(ShopIP,ShopName,PlatformName,ProductID,Title,' \ 'SKU,ShopSKU,Price,Quantity,RefreshTime,Image,Status,DateUploaded,ParentSKU,' \ 'ReviewState,OfWishes,OfSales,LastUpdated,Shipping,Color,`Size`,msrp,' \ 'ShippingTime,ExtraImages,VariationID,Description,Tags,' \ 'MainSKU,ShopSKUImage,is_promoted,WishExpress,DepartmentID,seller,Published,' \ 'GoodsStatus,filtervalue,APIState,BeforeReviewState)' \ ' VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,' \ '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ; ' cursor.execute( sql_insert, (self.ShopIP, ShopName, PlatformName, ProductID, Title, SKU, shopskutmp, Price, Inventory, RefreshTime, ImageURL, Statusssss, DateUploaded, ParentSKU, ReviewState, OfWishes, OfSales, LastUpdated, Shipping, Color, Size, msrp, ShippingTime, ExtraImages, VariationID, Description, Tags, classsku_obj.get_bemainsku_by_sku(SKU), ShopSKUImage, is_promoted, WishExpress, DepartmentID, seller, Published, sku_goodsstatus, 1, 'nothing', BeforeReviewState)) insert_product.append(ProductID) # sql_update = "update py_db.b_goodsskulinkshop a, t_online_info b set b.sku = a.sku ,b.MainSKU = getMainSKU(a.SKU) ,b.MainShopSKU = getMainSKU(b.shopSKU) where a.shopsku = b.shopsku and b.ProductID = %s and b.ShopSKU = %s " # cursor.execute(sql_update,(ProductID,ShopSKU)) shopskulist.append(shopskutmp) # logger.error("shopskulist===%s" % (shopskulist, )) # logger.error("join===%s" % ('|'.join(shopskulist), )) #sql_update_mainsku = 'update t_online_info set MainSKU = getMainSKU(SKU) ,MainShopSKU = getMainSKU(shopSKU) where ProductID= %s and ShopSKU =%s ' #cursor.execute(sql_update_mainsku,(ProductID,ShopSKU)) # 获取该产品的海外仓运费和库存 for we in eval(WishExpress): # 是属于海外仓的 # raise Exception(self.warehouse) if self.warehouse.has_key(we) and we in ['DE', 'GB', 'US']: warehouseid = self.warehouse[we] vgoodsinfos = cwishapi_obj.warehouse_vgoodsinfo( self.access_token, ProductID, warehouseid) # assert vgoodsinfos['errorcode'] == 1, vgoodsinfos['errortext'] if vgoodsinfos['errorcode'] == 1: for vgoods in vgoodsinfos['data']: wvid = vgoods['Variant']['id'] shopsku = vgoods['Variant']['sku'].replace( '<', '<').replace('>', '>').replace( '&', '&').replace("'", "'").replace('\\/', '/') if '\u' in shopsku: try: shopsku = shopsku.decode('unicode-escape') except: pass wshipping = vgoods['Variant'][ 'shipping'] # DEExpressShipping if wshipping == '': wshipping = None ws = getattr(classshopsku_obj, "setWish%sShipping" % we) ws(shopsku, wshipping) # eval("classshopsku_obj.setWish%sShipping" % we)(shopsku, wshipping) winventory = vgoods['Variant'][ 'inventory'] # DEExpressInventory if winventory == '': winventory = None wi = getattr(classshopsku_obj, "setWish%sQuantity" % we) wi(shopsku, winventory) # eval("classshopsku_obj.setWish%sQuantity" % we)(shopsku, winventory) vsql = "update t_online_info set " + we + "ExpressShipping=%s," + we + \ "ExpressInventory=%s WHERE ProductID=%s and VariationID=%s;" cursor.execute( vsql, (wshipping, winventory, ProductID, wvid)) if vidlist: # 删除多余的变体信息 del_param_list = [] old_shopsku_list = classlisting_obj.getShopSKUList(ProductID) if old_shopsku_list: for del_shopsku in old_shopsku_list: if del_shopsku not in shopskulist: del_param_list.append([ProductID, del_shopsku]) delete_product.append(ProductID) # del_sku = classshopsku_obj.getSKU(del_shopsku) # if del_sku: # delete_sku.append(del_sku) cursor.executemany( "delete from t_online_info WHERE ProductID=%s and ShopSKU=%s ;", del_param_list) classlisting_obj.setShopSKUList( ProductID, '|'.join(shopskulist)) # ProductID ShopSKUList # for k,v in filterdict.items(): # cursor.execute("update t_online_info set filtervalue = 0 WHERE ProductID=%s and SKU=%s;",(ProductID,k,)) if fbw_flag_list and 'True' in fbw_flag_list: cursor.execute( "update t_online_info set FBW_Flag = 'True' WHERE ProductID=%s ;", (ProductID, )) elif 'False' in fbw_flag_list: cursor.execute( "update t_online_info set FBW_Flag = 'False' WHERE ProductID=%s ;", (ProductID, )) self.cnxn.commit() for inproduct in set(insert_product): iResult = t_event_class_obj.t_online_info_insert_trigger(inproduct) for delproduct in set(delete_product): del_Result = t_event_class_obj.t_online_info_delete_trigger( delproduct) for updproduct in set(update_product): upd_Result = t_event_class_obj.t_online_info_update_trigger( updproduct) cursor.close() refreshdict['ProductID'] = prolist return refreshdict
def run(params): # 获取需要刷新的数据 t_online_info_objs = t_online_info(params['ShopName'], params['dbcnxn']) t_report_orders1days_objs = t_report_orders1days(params['dbcnxn']) t_store_configuration_file_obj = t_store_configuration_file( params['dbcnxn']) classlisting_obj = classlisting(params['dbcnxn']) classmainsku_obj = classmainsku(params['dbcnxn']) t_templet_wish_upload_result_obj = t_templet_wish_upload_result( params['dbcnxn']) classshopsku_obj = classshopsku(params['dbcnxn'], shopname=params['ShopName']) t_online_info_wish_obj = t_online_info_wish(params['dbcnxn']) t_distribution_product_to_store_result_obj = t_distribution_product_to_store_result( params['dbcnxn']) t_large_small_corresponding_cate_obj = t_large_small_corresponding_cate( params['dbcnxn']) t_wish_pb_campaignproductstats_obj = t_wish_pb_campaignproductstats( params['dbcnxn']) infodata = t_online_info_objs.getshopproductdata(params['ProductID']) for obj in infodata: datedict = {} datedict['ProductID'] = obj['ProductID'] datedict['ShopName'] = obj['ShopName'] datedict['Title'] = obj['Title'] datedict['SKU'] = obj['SKU'] datedict['ShopSKU'] = obj['ShopSKU'] datedict['Price'] = obj['Price'] datedict['RefreshTime'] = obj['RefreshTime'] yyyymmdd = obj['RefreshTime'].strftime('%Y%m%d') datedict['SoldTheDay'] = t_report_orders1days_objs.getSoldTheDay( obj['ProductID'], yyyymmdd) datedict['SoldYesterday'] = t_report_orders1days_objs.getSoldYesterday( obj['ProductID'], yyyymmdd) datedict['Orders7Days'] = t_report_orders1days_objs.getOrders7Days( obj['ProductID'], yyyymmdd) # 默认 普通仓 # 海外仓 7天订单数,总销量 订单不足 数值偏小 datedict[ 'Order7daysDE'] = t_report_orders1days_objs.getOrders7Days_WarehouseName( obj['ProductID'], yyyymmdd, 'DE') datedict[ 'Order7daysGB'] = t_report_orders1days_objs.getOrders7Days_WarehouseName( obj['ProductID'], yyyymmdd, 'GB') datedict[ 'Order7daysUS'] = t_report_orders1days_objs.getOrders7Days_WarehouseName( obj['ProductID'], yyyymmdd, 'US') datedict[ 'Order7daysFBW'] = t_report_orders1days_objs.getOrders7Days_WarehouseName( obj['ProductID'], yyyymmdd, 'FBW') datedict[ 'OfsalesDE'] = t_report_orders1days_objs.ofSales_Of_ProductID_WarehouseName( obj['ProductID'], 'DE') datedict[ 'OfsalesGB'] = t_report_orders1days_objs.ofSales_Of_ProductID_WarehouseName( obj['ProductID'], 'GB') datedict[ 'OfsalesUS'] = t_report_orders1days_objs.ofSales_Of_ProductID_WarehouseName( obj['ProductID'], 'US') datedict[ 'OfsalesFBW'] = t_report_orders1days_objs.ofSales_Of_ProductID_WarehouseName( obj['ProductID'], 'FBW') classlisting_obj.set_order7days_listingid(datedict['ProductID'], datedict['Orders7Days']) datedict['SoldXXX'] = int(datedict['SoldTheDay']) - int( datedict['SoldYesterday']) datedict['DateOfOrder'] = None datedict['Image'] = obj['Image'] datedict['Status'] = obj['Status'] datedict['ReviewState'] = obj['ReviewState'] datedict['DateUploaded'] = obj['DateUploaded'] datedict['LastUpdated'] = obj['LastUpdated'] datedict['OfSales'] = obj['OfSales'] datedict['ParentSKU'] = obj['ParentSKU'] datedict['is_promoted'] = obj['is_promoted'] datedict['WishExpress'] = obj['WishExpress'] datedict[ 'Seller'] = t_store_configuration_file_obj.getsellerbyshopcode( params['ShopName'][0:9]) datedict['MainSKU'] = obj['MainSKU'] datedict['TortInfo'] = 'N' mainskulist = classlisting_obj.getmainsku(obj['ProductID']) if mainskulist: tortlist = [] for mainsku in set(mainskulist): tortsite = classmainsku_obj.get_tort_by_mainsku(mainsku) if tortsite is not None: tortlist = tortlist + tortsite if tortlist: if 'Wish' in tortlist: datedict['TortInfo'] = 'WY' else: datedict['TortInfo'] = 'Y' datedict['DataSources'] = "NORMAL" if t_templet_wish_upload_result_obj.get_count_num( obj['ParentSKU'], obj['ShopName']) >= 1: datedict['DataSources'] = "UPLOAD" else: if t_distribution_product_to_store_result_obj.get_count_num( obj['ParentSKU'], obj['ShopName']) >= 1: datedict['DataSources'] = "UPLOAD" datedict['OperationState'] = 'No' if obj['Status'] == 'Disabled': datedict['OperationState'] = 'Yes' # MainSKU,大类,小类 datedict['MainSKULargeCate'] = None datedict['MainSKUSmallCate'] = None mlist = [] if datedict['MainSKU']: mlist = re.findall(r'[0-9]+|[a-z]+|[A-Z|]+|[-]', datedict['MainSKU']) if len(mlist) >= 1: datedict['MainSKUSmallCate'] = mlist[0] # 小类 lResult = t_large_small_corresponding_cate_obj.getLargeClassBySmallClass( datedict['MainSKUSmallCate']) if lResult['code'] == 1: datedict['MainSKULargeCate'] = lResult['largecode'] datedict['SName'] = '0' # 店铺状态 0 正常 -1 异常 # 1 正常(在线); 0 正常(不在线); -1 api调用错误; -2 执行代码异常; if datedict['ReviewState'] == 'approved' and datedict[ 'Status'] == 'Enabled': datedict['AdStatus'] = '1' # 1 正常(在线) else: datedict['AdStatus'] = '0' # 0 正常(不在线) datedict['Published'] = None if obj['ShopSKU'] is not None and obj['ShopSKU'].strip() != '': pub = None for shopsku in obj['ShopSKU'].split(','): for each_shopsku in shopsku.split('+'): pub = classshopsku_obj.getPublished( each_shopsku.split('*')[0].split('\\')[0].split('/') [0]) # 按照店铺SKU来抓取刊登人 if pub: break if pub: break datedict['Published'] = pub datedict['market_time'] = None # 这里是商品状态结果集 statuslist = t_online_info_objs.get_goodsstatus_by_productid( params['ProductID']) a1 = 0 if '1' in statuslist: a1 = 1 a2 = 0 if '2' in statuslist: a2 = 1 a3 = 0 if '3' in statuslist: a3 = 1 a4 = 0 if '4' in statuslist: a4 = 1 datedict['GoodsFlag'] = a1 * 1000 + a2 * 100 + a3 * 10 + a4 # 店铺SKU状态结果集 sstatuslist = t_online_info_objs.get_shopskustatus_by_productid( params['ProductID']) b1 = 0 if 'Enabled' in sstatuslist: b1 = 1 b2 = 0 if 'Disabled' in sstatuslist: b2 = 1 datedict['ShopsFlag'] = b1 * 10 + b2 # 绑定状态结果集 datedict['BindingFlag'] = 1 # 默认全部绑定 # anum = obj[-1] # 变体数量 # unum = t_online_info_objs.get_binding_by_productid(params['ProductID']) # if int(anum) == int(unum): # datedict['BindingFlag'] = 3 # elif int(anum) > 0 and int(unum) == 0: # datedict['BindingFlag'] = 1 # elif int(anum) > 0 and int(unum) != 0: # datedict['BindingFlag'] = 2 # print datedict datedict['BeforeReviewState'] = obj['BeforeReviewState'] # 上一个wish查看状态 datedict['Rating'] = 0 # 链接的评分 if float(datedict['OfSales']) > 0: rResult = t_online_info_wish_obj.get_product_id_rating( datedict['ProductID']) old_rating = rResult.get('rating', 0) Gresult = get_rating(datedict['ProductID']) new_rating = Gresult.get('rating', 0) if new_rating == 0 and datedict[ 'ReviewState'] == 'rejected': # 被拒绝的连接 datedict['Rating'] = old_rating elif new_rating != 0: datedict['Rating'] = new_rating datedict['ADShow'] = 0 # 是否有广告 0 没有 1 有 adResult = t_wish_pb_campaignproductstats_obj.j_ad( datedict['ProductID']) if adResult['errorcode'] == 1: datedict['ADShow'] = 1 # 周销量趋势 -1:下降 0:平稳 1:上升 datedict['SalesTrend'] = get_salestrend(datedict['ProductID'], t_report_orders1days_objs) datedict['FBW_Flag'] = obj['FBW_Flag'] # fbw 标记 print "datedict['ProductID']=============%s" % datedict['ProductID'] t_online_info_wish_obj.refreshwishdata(datedict)