def CreateParam(shopname, productid, parentsku):
    auth_info = verb_token(shopname, connection)
    assert auth_info['errorcode'] == 1, auth_info['errortext']

    params = {
        'access_token': auth_info['access_token'],
        'ProductID': productid,
        'ParentSKU': ''
    }  # api参数
    if parentsku:
        params['ParentSKU'] = parentsku
    return params
Esempio n. 2
0
    def __init__(self, ShopName, cnxn, redis_conn=None):
        self.cnxn = cnxn
        self.redis_conn = redis_conn
        self.PlatformName = ''  #   models.CharField(u'平台',choices=ChoicesPlatformName,max_length=16,blank = True,null = True)
        self.ProductID = ''  #  models.CharField(u'ProductID',max_length=32,blank = True,null = True)
        self.ShopIP = ''  #  models.CharField(u'URL',max_length=32,blank = True,null = True)
        self.ShopName = ShopName  #  models.CharField(u'店铺名称',max_length=32,blank = True,null = True)
        self.Title = ''  #  models.CharField(u'Title',max_length=100,blank = True,null = True)
        self.SKU = ''  # models.CharField(u'商品SKU',max_length=32,blank = True,null = True)
        self.ShopSKU = ''  # models.CharField(u'店铺SKU',max_length=32,blank = True,null = True)
        self.Price = ''  # models.CharField(u'价格',max_length=32,blank = True,null = True)
        self.RefreshTime = None  # models.DateTimeField(u'刷新时间',blank = True,null = True)
        self.Image = ''  #  models.CharField(u'图片',max_length=200,blank = True,null = True)

        #wish专用
        self.last_ProductID = None
        self.last_ProductName = None
        self.last_ParentSKU = None
        self.last_ImageURL = None
        self.last_DateUploaded = None
        self.last_ReviewState = None
        self.last_OfWishes = None
        self.last_OfSales = None
        self.last_LastUpdated = None
        self.last_ExtraImages = None
        self.last_Description = None
        self.last_Tags = None

        warehouse_obj = t_wish_shopcode_warehouse(self.cnxn)
        wResult = warehouse_obj.get_warehouse(self.ShopName)
        if wResult['errorcode'] != 1:  #
            # t_store_configuration_file_obj = t_store_configuration_file(self.cnxn)
            # ssResult = t_store_configuration_file_obj.update_shopStatus('-1', self.ShopName)  # 更新店铺配置文件中的 店铺状态
            # assert ssResult['errorcode'] == 0, ssResult['errortext']
            #
            # t_online_info_wish_obj = t_online_info_wish(self.cnxn)
            # SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName(self.ShopName, '-1')  # shopname
            # assert SNResult['errorcode'] == 1, SNResult['errortext']

            raise Exception(wResult['errortext'])
        self.warehouse = wResult['warehouse']

        auth_info = verb_token(self.ShopName, self.cnxn)
        self.access_token = auth_info['access_token']
Esempio n. 3
0
 def insertDB(self, shopName):
     code = 0
     infractions_count = 0
     try:
         auth_info = verb_token(shopName, self.db_conn)
         access_token = auth_info.get('access_token')
         if access_token:
             objs_tmp = t_store_configuration_file.objects.filter(
                 ShopName_temp=shopName).values('Operators')
             Operators = objs_tmp[0]['Operators'] if objs_tmp else ''
             dict_infractions_count = self.get_infractions_count(
                 access_token)
             if 'code' in dict_infractions_count and dict_infractions_count[
                 'code'] == 0 and 'data' in dict_infractions_count and 'CountInfractionsResponse' in \
                     dict_infractions_count['data'] and 'count' in dict_infractions_count['data'][
                     'CountInfractionsResponse']:
                 infractions_count = int(
                     dict_infractions_count['data']
                     ['CountInfractionsResponse']['count'])
                 dict_infractions = {
                     'shopName': shopName,
                     'updateTime': datetime.now(),
                     'infractions_count': infractions_count,
                     'Operators': Operators
                 }
                 try:
                     truncateSQL = "delete from wish_infractions where shopName='{}'".format(
                         shopName)
                     self.cursor.execute(truncateSQL)
                     insertSQL = "INSERT INTO wish_infractions(shopName, infractions_count,Operators, updateTime) VALUE (%(shopName)s, %(infractions_count)s, %(Operators)s, %(updateTime)s)"
                     self.cursor.execute(insertSQL, dict_infractions)
                 except MySQLdb.Error, e:
                     print "Mysql Error %d: %s" % (e.args[0], e.args[1])
                     self.db_conn.rollback()
                     # 数据同步错误
                     code = 3
                 else:
                     self.db_conn.commit()
                     code = 0
             else:
                 # 错误的token
                 code = 2
         else:
Esempio n. 4
0
    def be_Viewed(self, request, queryset):
        for obj in queryset:
            try:
                auth_info = verb_token(obj.shopName, connection)
                assert auth_info['errorcode'] == 1, auth_info['errortext']

                url = "https://merchant.wish.com/api/v2/noti/mark-as-viewed"
                params = {
                    "access_token": auth_info['access_token'],
                    "format": "json",
                    "noti_id": obj.noti_id,
                }

                r = requests.post(url, params=params, timeout=5)
                wish_notification_syn_obj = wish_notification_syn()
                code = wish_notification_syn_obj.insertDB(obj.shopName)
            except Exception, e:
                logger.error(u'已看过----------------------%s' % e)
                pass
def MainBatchUpdateShipping(paramlsit, synname, warehouse):
    try:
        shippingDataList = eval(paramlsit[2])

        auth_info = verb_token(shopname=paramlsit[0], conn=connection)
        assert auth_info['errorcode'] == 1, auth_info['errortext']

        warehouse_obj = t_wish_shopcode_warehouse(connection)
        wResult = warehouse_obj.get_warehouse(paramlsit[0])
        assert wResult['errorcode'] == 1, wResult['errortext']
        if not wResult['warehouse'].has_key(warehouse):
            raise Exception(u'该店铺没有相应的仓库:%s,店铺所有仓库:%s' %
                            (warehouse, wResult['warehouse']))

        cwishapi_obj = cwishapi()
        t_wish_store_oplogs_obj = t_wish_store_oplogs(connection)

        show_log_text = ''
        for shippingData in shippingDataList:
            shippingData['id'] = paramlsit[1]
            shippingData['format'] = 'json'
            shippingData['access_token'] = auth_info['access_token']
            shippingData['warehouse_name'] = wResult['warehouse'][warehouse]

            if shippingData.get('_add') and int(
                    shippingData.get('_add').strip()) != 0:  # 原有基础上增加 运费
                rsp = cwishapi().Get_Shipping_Prices_of_a_Product({
                    'access_token':
                    auth_info['access_token'],
                    'product_id':
                    paramlsit[1],
                    'country':
                    shippingData['country']
                })
                _add = shippingData.pop('_add')
                if rsp['errorcode'] == 1:
                    if rsp['shiping_infors']['ProductCountryShipping'][
                            'use_product_shipping'] == 'True':
                        shippinglist = all_shipping_list(paramlsit)
                        shippingData['price'] = str(
                            max(shippinglist) + float(_add))
                    else:
                        shippingData['price'] = str(
                            float(rsp['shiping_infors']
                                  ['ProductCountryShipping']['shipping_price'])
                            + float(_add))
                else:
                    raise Exception(rsp['errortext'])

            elif shippingData.get('_add') and int(
                    shippingData.get('_add').strip()) == 0:
                shippinglist = all_shipping_list(paramlsit)
                shippingData['price'] = str(max(shippinglist))

            edit_result = cwishapi_obj.edit_shipping_price_of_a_product(
                shippingData)
            # edit_result = {'errorcode': -1, 'errortext': json.dumps(shippingData)}
            keyone = '{}_{}'.format(paramlsit[1], shippingData['country'])
            if edit_result['errorcode'] == 1:
                uPResult = t_wish_store_oplogs_obj.updateStatusP(
                    synname, keyone, 'over', '')
                utext = uPResult['errortext'] if uPResult[
                    'errorcode'] == -1 else ''
                show_log_text += u'ProductID: {},国家: {}; 修改成功!{}\n'.format(
                    paramlsit[1], shippingData['country'], utext)
            else:
                uPResult = t_wish_store_oplogs_obj.updateStatusP(
                    synname, keyone, 'error', edit_result['errortext'])
                utext = uPResult['errortext'] if uPResult[
                    'errorcode'] == -1 else ''
                show_log_text += u'ProductID: {},国家: {}; 修改失败!错误原因: {}, {} \n'.format(
                    paramlsit[1], shippingData['country'],
                    edit_result['errortext'], utext)
        return {'Code': 1, 'messages': ''}
    except Exception as error:
        return {'Code': -1, 'messages': '%s:%s' % (synname, error)}
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_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)
Esempio n. 8
0
def arrange_params(opnum, type, opkey):
    t_wish_store_oplogs_obj = t_wish_store_oplogs(connection)

    result_objs = t_templet_wish_publish_result.objects.filter(
        pid=opkey, Status='waiting')
    param, shopname, parentsku, ShippingTempletID = '', '', '', ''
    try:
        if result_objs.exists():
            result_obj = result_objs[0]
            shopname = result_obj.ShopName

            auth_info = verb_token(shopname[:9], connection)
            assert auth_info['errorcode'] == 1, auth_info['errortext']

            pubdata = {}  # 用于刊登的数据 集合
            pubdata['id'] = opkey

            uResult = wish_image_upload(result_obj.MainImage, auth_info)
            assert uResult['errorcode'] == 1, '%s' % uResult['errortext']
            pubdata['main_image'] = uResult['image_url']  # 产品主图

            pubdata['first'] = {}
            pubdata['first'][
                'url'] = 'https://merchant.wish.com/api/v2/product/add'

            pubdata['first']['product'] = {}
            pubdata['first']['product']['access_token'] = auth_info[
                'access_token']
            pubdata['first']['product']['format'] = 'json'
            pubdata['first']['product']['enabled'] = True
            pubdata['first']['product']['name'] = result_obj.Title
            pubdata['first']['product']['tags'] = result_obj.Tags
            pubdata['first']['product']['description'] = result_obj.Description

            maininfo = json.loads(result_obj.MainInfo)
            parentsku = maininfo.get('ParentSKU')
            pubdata['first']['product']['parent_sku'] = parentsku
            ShippingTempletID = maininfo.get('CountryShipping', '')

            epiclist = []
            for epic in result_obj.ExtraImages.split('|'):
                if epic.strip() != '':
                    euResult = wish_image_upload(epic, auth_info)
                    assert euResult['errorcode'] == 1, euResult['errortext']
                    epiclist.append(euResult['image_url'])

            pubdata['first']['product']['extra_images'] = '|'.join(
                epiclist)  # 产品附图

            v_datas = json.loads(result_obj.Variants)

            if len(v_datas) >= 1:
                v_data = v_datas[0]
                if not parentsku:
                    pubdata['first']['product']['parent_sku'] = v_data.get(
                        'ShopSKU')

                assert v_data.get('ShopSKU'), u'店铺SKU不能为空'
                pubdata['first']['product']['sku'] = v_data.get('ShopSKU')
                pubdata['first']['product']['main_image'] = v_data.get('vPic')
                pubdata['first']['product']['color'] = v_data.get('Color')
                pubdata['first']['product']['size'] = v_data.get('Size')
                pubdata['first']['product']['msrp'] = v_data.get('Msrp')
                pubdata['first']['product']['price'] = v_data.get('Price')
                pubdata['first']['product']['inventory'] = v_data.get('Kc')
                pubdata['first']['product']['shipping'] = v_data.get(
                    'Shipping')
                pubdata['first']['product']['shipping_time'] = v_data.get(
                    'Shippingtime')

                if v_data.get('vPic'):
                    uvResult = wish_image_upload(v_data.get('vPic'), auth_info)
                    assert uvResult['errorcode'] == 1, uvResult['errortext']
                    pubdata['first']['product']['main_image'] = uvResult[
                        'image_url']  # 第一变体图

                pubdata['second'] = {}
                pubdata['second'][
                    'url'] = 'https://merchant.wish.com/api/v2/variant/add'

                pubdata['second']['product'] = []
                for i in range(1, len(v_datas)):
                    v_d = v_datas[i]
                    v_dict = {}
                    v_dict['access_token'] = auth_info['access_token']
                    v_dict['format'] = 'json'
                    v_dict['parent_sku'] = pubdata['first']['product'][
                        'parent_sku']

                    assert v_d.get('ShopSKU'), u'店铺SKU不能为空'
                    v_dict['sku'] = v_d.get('ShopSKU')
                    v_dict['main_image'] = v_d.get('vPic')
                    v_dict['enabled'] = True
                    v_dict['color'] = v_d.get('Color')
                    v_dict['size'] = v_d.get('Size')
                    v_dict['msrp'] = v_d.get('Msrp')
                    v_dict['price'] = v_d.get('Price')
                    v_dict['inventory'] = v_d.get('Kc')
                    # v_dict['shipping']      = v_d.get('Shipping')   10.8以后不再允许创建变体时设置运费
                    v_dict['shipping_time'] = v_d.get('Shippingtime')

                    if v_d.get('vPic'):
                        vuResult = wish_image_upload(v_d.get('vPic'),
                                                     auth_info)
                        assert vuResult['errorcode'] == 1, vuResult[
                            'errortext']
                        v_dict['main_image'] = vuResult['image_url']  # 各变体图

                    pubdata['second']['product'].append(v_dict)

            param = json.dumps(pubdata)

            print '================' + param
        if param:
            # 在这里调用刊登函数
            pResult = to_pub(param, opkey)
            assert pResult['errorcode'] == 1, u'errortext:{}; param:{}'.format(
                pResult['errortext'], param)
            try:
                ApplicationShippingForm([shopname[:9], pResult['productid']],
                                        ShippingTempletID)  # 应用模板数据
                PostRefresh([shopname[:9], pResult['productid'],
                             parentsku])  # 刷新链接到本地
            except Exception as er:
                applyerror = u'Published is successful! BUT, {}'.format(er)
                try:
                    PostRefresh(
                        [shopname[:9], pResult['productid'],
                         parentsku])  # 刷新链接到本地
                except Exception as error:
                    if u'{}'.format(er) != u'{}'.format(error):
                        applyerror = applyerror + u'{}'.format(error)

                raise Exception(applyerror)
        else:
            raise Exception('param===%s;' % param)

        result_objs.update(param=param,
                           Status='success',
                           result=pResult['productid'])
        t_wish_store_oplogs_obj.updateStatusP(opnum, opkey, 'over', '')
    except Exception, e:
        errortext = u'%s:%s' % (Exception, e)
        if '\u' in errortext:
            try:
                errortext = errortext.decode("unicode_escape")
            except:
                pass
        result_objs.update(param='', Status='error', result=errortext)
        t_wish_store_oplogs_obj.updateStatusP(opnum, opkey, 'error', errortext)
 def insertDB(self, shopName):
     code = 0
     try:
         auth_info = verb_token(shopName, self.db_conn)
         access_token = auth_info.get('access_token')
         if access_token:
             objs_tmp = t_store_configuration_file.objects.filter(
                 ShopName_temp=shopName).values('Operators')
             Operators = objs_tmp[0]['Operators'] if objs_tmp else ''
             dict_unview_count = self.get_unview_count(access_token)
             if 'code' in dict_unview_count and 'data' in dict_unview_count and dict_unview_count[
                     'code'] == 0:
                 unview_count = dict_unview_count['data']['count']
                 if int(unview_count) > 0:
                     info = self.getData(access_token)
                     if 'code' in info and 'data' in info and info[
                             'code'] == 0:
                         dict_unview = {
                             'shopName': shopName,
                             'updateTime': datetime.now(),
                             'unview_count': unview_count,
                             'Operators': Operators
                         }
                         try:
                             truncateSQL = "delete from wish_notification where shopName='{}'".format(
                                 shopName)
                             self.cursor.execute(truncateSQL)
                             for GetNotiResponse in info['data']:
                                 for k, v in GetNotiResponse[
                                         'GetNotiResponse'].items():
                                     dict_unview[k] = v
                                 insertSQL = "INSERT INTO wish_notification(shopName, perma_link, message, " \
                                             "title, noti_id, unview_count,Operators, updateTime) VALUE (%(shopName)s,%(perma_link)s,%(message)s," \
                                             "%(title)s,%(id)s, %(unview_count)s, %(Operators)s, %(updateTime)s)"
                                 self.cursor.execute(insertSQL, dict_unview)
                         except MySQLdb.Error, e:
                             print "Mysql Error %d: %s" % (e.args[0],
                                                           e.args[1])
                             self.db_conn.rollback()
                             # 数据同步错误
                             code = 3
                         else:
                             self.db_conn.commit()
                             code = 0
                 else:
                     dict_unview = {
                         'shopName': shopName,
                         'unview_count': unview_count,
                         'updateTime': datetime.now(),
                         'Operators': Operators
                     }
                     try:
                         truncateSQL = "delete from wish_notification where shopName='{}'".format(
                             shopName)
                         self.cursor.execute(truncateSQL)
                         insertSQL = "INSERT INTO wish_notification(shopName, unview_count, Operators, updateTime)" \
                                     "VALUE (%(shopName)s %(unview_count)s, %(Operators)s, %(updateTime)s)"
                         self.cursor.execute(insertSQL, dict_unview)
                     except MySQLdb.Error, e:
                         print "Mysql Error %d: %s" % (e.args[0], e.args[1])
                         self.db_conn.rollback()
                         # 数据同步错误
                         code = 3
                     else:
                         self.db_conn.commit()
                         code = 0
 def insertDB(self, shopName):
     # shopName = "Wish-0236"
     try:
         auth_info = verb_token(shopName, self.db_conn)
         access_token = auth_info.get('access_token')
         if access_token:
             info = self.getData(access_token)
             if 'code' in info and 'data' in info and info['code'] == 0:
                 objs_tmp = t_store_configuration_file.objects.filter(
                     ShopName_temp=shopName).values('Operators')
                 Operators = objs_tmp[0]['Operators'] if objs_tmp else ''
                 dict_order = {
                     'shopName': shopName,
                     'updateTime': datetime.now(),
                     'street_address2': None,
                     'color': None,
                     'size': None,
                     'Operators': Operators,
                     'phone_number': None,
                     'last_updated': None,
                     'expected_ship_date': None,
                     'product_id': None,
                     'buyer_id': None,
                     'is_combined_order': None,
                     'variant_id': None,
                     'requires_delivery_confirmation': None,
                     'cost': None,
                     'shipping_cost': None,
                     'hours_to_fulfill': None,
                     'sku': None,
                     'order_total': None,
                     'state': None,
                     'days_to_fulfill': None,
                     'product_name': None,
                     'transaction_id': None,
                     'order_time': None,
                     'order_id': None,
                     'price': None,
                     'released_to_merchant_time': None,
                     'is_wish_express': None,
                     'product_image_url': None,
                     'tracking_confirmed': None,
                     'shipping': None,
                     'quantity': None,
                     'city': None,
                     'name': None,
                     'country': None,
                     'zipcode': None,
                     'street_address1': None
                 }
                 try:
                     truncateSQL = "delete from wish_processed_order where shopName='{}'".format(
                         shopName)
                     self.cursor.execute(truncateSQL)
                     for order in info['data']:
                         for k, v in order['Order'].items():
                             if k == 'ShippingDetail':
                                 for x, y in order['Order'][
                                         'ShippingDetail'].items():
                                     dict_order[x] = y
                             else:
                                 dict_order[k] = v
                         insertSQL = "INSERT INTO wish_processed_order(shopName,last_updated,expected_ship_date,product_id,buyer_id,is_combined_order," \
                                     "variant_id,requires_delivery_confirmation,cost,shipping_cost,hours_to_fulfill,order_size,sku,order_total," \
                                     "state,days_to_fulfill,product_name,transaction_id,order_time,order_id,price,released_to_merchant_time," \
                                     "is_wish_express,product_image_url,tracking_confirmed,shipping,quantity,phone_number,city,user_name,country," \
                                     "zipcode,street_address1,street_address2,color,updateTime, Operators) VALUE (%(shopName)s,%(last_updated)s,%(expected_ship_date)s,%(product_id)s,%(buyer_id)s," \
                                     "%(is_combined_order)s,%(variant_id)s,%(requires_delivery_confirmation)s,%(cost)s,%(shipping_cost)s," \
                                     "%(hours_to_fulfill)s,%(size)s,%(sku)s,%(order_total)s,%(state)s,%(days_to_fulfill)s,%(product_name)s," \
                                     "%(transaction_id)s,%(order_time)s,%(order_id)s,%(price)s,%(released_to_merchant_time)s,%(is_wish_express)s," \
                                     "%(product_image_url)s,%(tracking_confirmed)s,%(shipping)s,%(quantity)s,%(phone_number)s,%(city)s,%(name)s," \
                                     "%(country)s,%(zipcode)s,%(street_address1)s,%(street_address2)s,%(color)s,%(updateTime)s, %(Operators)s)"
                         self.cursor.execute(insertSQL, dict_order)
                 except Exception, e1:
                     logger.error(
                         'order_syn---------------------------------%s' %
                         e1)
                     self.db_conn.rollback()
                     # 数据同步错误
                     return 3
                 else:
                     self.db_conn.commit()
                     return 0
             else:
                 logger.error("error token:{}".format(shopName))
                 # 错误的token
                 return 2
         else:
Esempio n. 11
0
    def insertDB(self, shopName):
        try:
            auth_info = verb_token(shopName, self.db_conn)
            access_token = auth_info.get('access_token')
            if access_token:
                info = self.getData(access_token)
                if info['errorcode'] == 1:
                    list_ticket = []
                    if info['data']:  # data 不为空
                        objs_tmp = t_store_configuration_file.objects.filter(
                            ShopName_temp=shopName).values('Operators')
                        Operators = objs_tmp[0]['Operators'] if objs_tmp else ''

                        try:
                            for data in info['data']:
                                item_list = data['Ticket']['items']
                                product_id = item_list[0]['Order'][
                                    'product_id']
                                product_image_url = item_list[0]['Order'][
                                    'product_image_url']
                                product_name = item_list[0]['Order'][
                                    'product_name']
                                order_id = item_list[0]['Order']['order_id']
                                logger.error(
                                    'data--------------------------------------%s'
                                    % data)
                                dict_ticket = {
                                    'shopName': shopName,
                                    'updateTime': datetime.now(),
                                    'Operators': Operators,
                                    'default_refund_reason': '',
                                    'label': '',
                                    'sublabel': '',
                                    'open_date': '',
                                    'state': '',
                                    'UserInfo_locale': '',
                                    'UserInfo_joined_date': '',
                                    'UserInfo_id': '',
                                    'UserInfo_name': '',
                                    'last_update_date': '',
                                    'state_id': '',
                                    'merchant_id': '',
                                    'photo_proof': '',
                                    'ticket_id': '',
                                    'ticket_transaction_id': '',
                                    'subject': '',
                                    'product_id': product_id,
                                    'product_image_url': product_image_url,
                                    'product_name': product_name,
                                    'replies': '',
                                    'order_id': order_id
                                }

                                ticket_dict = data['Ticket']

                                for k, v in ticket_dict.items():
                                    if k == 'UserInfo':
                                        for x, y in ticket_dict[
                                                'UserInfo'].items():
                                            if x == 'id':
                                                x = 'UserInfo_id'
                                            elif x == 'locale':
                                                x = 'UserInfo_locale'
                                            elif x == 'joined_date':
                                                x = 'UserInfo_joined_date'
                                            elif x == 'name':
                                                x = 'UserInfo_name'
                                            if '\u' in y:
                                                try:
                                                    y = y.decode(
                                                        "unicode_escape")
                                                except:
                                                    pass
                                            dict_ticket[x] = y
                                    else:
                                        if k == 'id':
                                            k = 'ticket_id'
                                        elif k == 'transaction_id':
                                            k = 'ticket_transaction_id'
                                        elif k == 'replies':
                                            v = repr(v)
                                        if '\u' in v:
                                            try:
                                                v = v.decode("unicode_escape")
                                            except:
                                                pass
                                        dict_ticket[k] = v

                                list_ticket.append(dict_ticket)
                        except Exception, e1:
                            logger.error(
                                '--------------------------------------%s' %
                                e1)
                            # 数据同步错误
                            return 3

                    try:
                        transaction.set_autocommit(False)

                        truncateSQL = "delete from wish_ticket where shopName='{}'".format(
                            shopName)

                        insertSQL = "INSERT INTO wish_ticket(shopName,label,sublabel,open_date,state," \
                                    "UserInfo_locale,UserInfo_joined_date,UserInfo_id,UserInfo_name,last_update_date," \
                                    "state_id,default_refund_reason,merchant_id,photo_proof,ticket_id," \
                                    "ticket_transaction_id,subject,updateTime,Operators,product_id,product_name,product_image_url,replies,order_id) VALUE (%(shopName)s," \
                                    "%(label)s,%(sublabel)s,%(open_date)s,%(state)s,%(UserInfo_locale)s," \
                                    "%(UserInfo_joined_date)s,%(UserInfo_id)s,%(UserInfo_name)s,%(last_update_date)s," \
                                    "%(state_id)s,%(default_refund_reason)s,%(merchant_id)s,%(photo_proof)s," \
                                    "%(ticket_id)s,%(ticket_transaction_id)s,%(subject)s,%(updateTime)s,%(Operators)s,%(product_id)s,%(product_name)s,%(product_image_url)s,%(replies)s,%(order_id)s)"

                        self.cursor.execute(truncateSQL)
                        self.cursor.executemany(insertSQL, list_ticket)
                        transaction.commit()
                        return 0
                    except Exception, e1:
                        logger.error(
                            '--------------------------------------%s' % e1)
                        transaction.rollback()
                        # 数据同步错误
                        return 3

                else:
Esempio n. 12
0
    def __init__(self, ShopName, cnxn):
        self.cnxn = cnxn
        self.ShopName = ShopName  #  models.CharField(u'店铺名称',max_length=32,blank = True,null = True)

        auth_info = verb_token(self.ShopName, self.cnxn)
        self.access_token = auth_info.get('access_token')
    def getauthByShopName(self, ShopName):
        ainfo = verb_token(ShopName, self.cnxn)
        assert ainfo['errorcode'] == 1, ainfo['errortext']

        self.auth_info = ainfo['auth_info']
        return ainfo['auth_info']