Exemple #1
0
    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
Exemple #2
0
    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>'
Exemple #4
0
    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)
Exemple #9
0
    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
                }))
Exemple #10
0
    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(
                '&lt;', '<').replace('&gt;', '>')
            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(
                    '&lt;', '<').replace('&gt;', '>').replace('&amp;', '&')
                # 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
Exemple #11
0
    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(
                '&lt;', '<').replace('&gt;',
                                     '>').replace("&#39;",
                                                  "'").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(
                    '&lt;', '<').replace('&gt;',
                                         '>').replace('&amp;', '&').replace(
                                             "&#39;", "'").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('&amp;',
                                                                '&')  #  &
                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(
                                '&lt;', '<').replace('&gt;', '>').replace(
                                    '&amp;',
                                    '&').replace("&#39;",
                                                 "'").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
Exemple #12
0
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)