예제 #1
0
파일: najax.py 프로젝트: Florence3546/CRM
def set_online_status(request):
    """修改计划状态 """
    shop_id = int(request.user.shop_id)
    camp_id_list = request.POST.getlist('camp_id_list[]')
    mode = int(request.POST['mode'])
    online_status = mode and 'online' or 'offline'
    opter, opter_name = analysis_web_opter(request)
    success_camp_ids, failed_camp_ids = [], []
    try:
        for camp_id in camp_id_list:
            result_list, _ = update_campaign(shop_id=shop_id,
                                             campaign_id=camp_id,
                                             online_status=online_status,
                                             opter=opter,
                                             opter_name=opter_name)
            if 'online_status' in result_list:
                success_camp_ids.append(str(camp_id))
            else:
                failed_camp_ids.append(str(camp_id))
        return {
            'errMsg': '',
            'mode': mode,
            'success_camp_ids': success_camp_ids
        }
    except Exception, e:
        log.error('update_camps_status error,e=%s, shop_id=%s' % (e, shop_id))
        return {'errMsg': '修改失败:淘宝接口不稳定,请稍后再试'}
예제 #2
0
파일: najax.py 프로젝트: Florence3546/CRM
def set_budget(request):
    """设置日限额"""
    budget = int(request.POST['budget'])
    campaign_id = int(request.POST['camp_id'])
    use_smooth = request.POST['use_smooth']
    shop_id = int(request.user.shop_id)
    errMsg = ''
    opter, opter_name = analysis_web_opter(request)
    try:
        result_list, msg_list = update_campaign(shop_id=shop_id,
                                                campaign_id=campaign_id,
                                                budget=budget,
                                                use_smooth=use_smooth,
                                                opter=opter,
                                                opter_name=opter_name)
        if 'budget' in result_list:
            json_result_data = {
                'camp_id': campaign_id,
                'budget': budget,
                'use_smooth': use_smooth
            }
        else:
            json_result_data = {}
            errMsg = '<br/>'.join(msg_list)
    except Exception, e:
        log.info('modify_camp_budget error, shop_id=%s, campaign_id=%s, e=%s' %
                 (shop_id, campaign_id, e))
        errMsg = '修改日限额失败,请联系顾问'
예제 #3
0
파일: najax.py 프로젝트: Florence3546/CRM
def quick_oper(request):
    '''触发页面上的“加大投入/减小投入”'''
    try:
        shop_id = int(request.user.shop_id)
        campaign_id = int(request.POST['campaign_id'])
        adg_id_list = request.POST.getlist("adg_id_list[]")
        adg_id_list = [int(adg_id) for adg_id in adg_id_list]
        stgy = int(request.POST['stgy'])
        opter, opter_name = analysis_web_opter(request)
        mnt_campaign = MntCampaign.objects.get(campaign_id = campaign_id, shop_id = shop_id)
        now = datetime.datetime.now()
        result = 1
        if adg_id_list:
            MntTaskMng.generate_quickop_task(shop_id = mnt_campaign.shop_id, campaign_id = mnt_campaign.campaign_id, mnt_type = mnt_campaign.mnt_type, stgy = stgy, adgroup_id_list = adg_id_list)
            adg_coll.update({'shop_id': shop_id, 'campaign_id':campaign_id, '_id':{'$in': adg_id_list}},
                            {'$set':{'quick_optime': now}}, multi = True)
        else:
            if not mnt_campaign.quick_optime or not time_is_someday(mnt_campaign.quick_optime):
                MntTaskMng.generate_quickop_task(shop_id = shop_id, campaign_id = mnt_campaign.campaign_id, mnt_type = mnt_campaign.mnt_type, stgy = stgy)
                mnt_campaign.quick_optime = now
                mnt_campaign.save()
            else:
                result = 2
        # 写入操作记录
        stgy_name = '加大投入' if stgy == 1 else '减小投入'
        opt_type = 15 if stgy == 1 else 16
        adg_ids = '、'.join([str(adg_id) for adg_id in adg_id_list])
        mnt_quick_oper_log(shop_id, campaign_id, adg_id_list, stgy_name, opter = opter, opter_name = opter_name)
        if adg_id_list:
            return {'errMsg':'', 'result':result, 'stgy':stgy, 'adg_id_list':adg_id_list}
        else:
            return {'errMsg':'', 'result':result, 'stgy':stgy}
    except Exception, e:
        log.exception('mnt quick oper error, shop_id=%s, campaign_id=%s, e=%s' % (request.user.shop_id, campaign_id, e))
        return {'errMsg':e, 'result':0, 'stgy':stgy}
예제 #4
0
def update_prop_status(request, dajax):
    """修改托管状态,包含两个状态,计划是否暂停与托管是否暂停,一改同时改"""
    try:
        campaign_id = request.POST['campaign_id']
        status = bool(int(request.POST['status']))
        shop_id = int(request.user.shop_id)
        mnt_type = int(request.POST.get('mnt_type', 0))
        online_status, mnt_status, opt_desc = status and (
            'online', 1, '开启自动优化') or ('offline', 0, '暂停自动优化')
        opter, opter_name = analysis_web_opter(request)
        result_list, msg_list = update_campaign(shop_id=shop_id,
                                                campaign_id=campaign_id,
                                                online_status=online_status,
                                                opter=opter,
                                                opter_name=opter_name)
        if 'online_status' not in result_list:
            raise Exception('<br/>'.join(msg_list))
        MntCampaign.objects.filter(
            shop_id=shop_id,
            campaign_id=campaign_id).update(set__mnt_status=mnt_status)
        dajax.script('PTQN.mnt.update_camp_back(%s)' % (status and 1 or 0))
    except Exception, e:
        log.info(
            'update mnt campaign prop status error ,e = %s, shop_id = %s' %
            (e, request.user.shop_id))
        dajax.script("PTQN.alert('%s失败,请刷新页面重新操作!');" % (opt_desc))
예제 #5
0
def quick_oper(request, dajax):
    """触发页面上的“加大投入/减小投入”"""
    try:
        shop_id = int(request.user.shop_id)
        campaign_id = int(request.POST['campaign_id'])
        stgy = int(request.POST['stgy'])
        opter, opter_name = analysis_web_opter(request)
        mnt_campaign = MntCampaign.objects.get(campaign_id=campaign_id)
        if not mnt_campaign.quick_optime or not time_is_someday(
                mnt_campaign.quick_optime):
            MntTaskMng.generate_quickop_task(
                shop_id=mnt_campaign.shop_id,
                campaign_id=mnt_campaign.campaign_id,
                mnt_type=mnt_campaign.mnt_type,
                stgy=stgy)
            # 不管执行成功或者失败,都不让再操作
            mnt_campaign.quick_optime = datetime.datetime.now()
            mnt_campaign.save()
            dajax.script('PTQN.mnt.quick_oper_back(%s);' % (stgy))
        else:
            dajax.script('PTQN.mnt.quick_oper_back(0);')
        stgy_name = '加大投入' if stgy == 1 else '减小投入'
        opt_type = 15 if stgy == 1 else 16
        opt_desc = '对托管的宝贝%s' % (stgy_name)
        mnt_quick_oper_log(shop_id,
                           campaign_id, [],
                           opt_desc,
                           opter=opter,
                           opter_name=opter_name)
    except Exception, e:
        log.exception(
            'mnt quick oper error, shop_id=%s, campaign_id=%s, e=%s' %
            (request.user.shop_id, campaign_id, e))
        dajax.script('PTQN.mnt.quick_oper_back(0);')
예제 #6
0
파일: najax.py 프로젝트: Florence3546/CRM
def add_new_item(request):
    '''全自动将新宝贝添加为托管
    1. 将增加的宝贝添加为广告组
    2. 将添加成功的广告组,设置成托管宝贝[注意数量限制],并且还要保存托管设置
    3. 添加成功的宝贝,只提示个数;添加失败的宝贝,要提示原因
    '''
    errMsg = ''
    msg = ''
    result = {}
    opter, opter_name = analysis_web_opter(request)
    def add_items_common(shop_id, campaign_id, new_item_dict):
        """给定item_title_list来添加宝贝"""
        item_arg_list, added_id_list, failed_item_dict = [], [], {}
        if new_item_dict:
            tapi = get_tapi(request.user)
            item_list = Item.get_item_by_ids(shop_id = shop_id, item_id_list = new_item_dict.keys(), tapi = tapi, transfer_flag = True) # 从淘宝获取标准的item数据
            temp_item_dict = {} # 获取部分宝贝信息
            for item in item_list: # 绑定创意标题
                added_item = new_item_dict.get(item['_id'], {})
                if not added_item:
                    continue
                item.update({'adgroup':
                                 {'title': TitleTransfer.remove_noneed_words(added_item['title1']),
                                  'img_url': added_item['img_url1']},
                             'creative':
                                 {'title': TitleTransfer.remove_noneed_words(added_item['title2']),
                                  'img_url': added_item['img_url2']},
                             })
                item_arg_list.append(item)
                temp_item_dict.update({item['_id']:[item['pic_url'], item['title']]})

            if item_arg_list:
                # 导入宝贝
                added_id_list, error_msg_dict = add_adgroups(shop_id = shop_id, campaign_id = campaign_id, item_arg_list = item_arg_list, tapi = tapi, opter = opter, opter_name = opter_name)
                for item_id, error_msg in  error_msg_dict.items():
                    temp_item_info = temp_item_dict.get(item_id, ('', ''))
                    failed_item_dict.update({item_id:(temp_item_info[0], temp_item_info[1], error_msg)})
                del temp_item_dict
        return added_id_list, failed_item_dict

    shop_id = int(request.user.shop_id)
    camp_id = int(request.POST['camp_id'])
    new_item_dict = json.loads(request.POST['new_item_dict'])
    new_item_dict = {int(item_id):adg_crt for item_id, adg_crt in new_item_dict.items()}
    mnt_type = int(request.POST.get('mnt_type', 0))

    try:
        success_adg_id_list, failed_item_dict = add_items_common(shop_id = shop_id, campaign_id = camp_id, new_item_dict = new_item_dict)
        msg = '添加成功 %s 个宝贝%%s,添加失败 %s 个宝贝!' % (len(success_adg_id_list), len(failed_item_dict))
        result['success_count'] = len(success_adg_id_list)
        result['failed_count'] = len(failed_item_dict)
    except Exception, e:
        success_adg_id_list, failed_item_dict = [], {}
        log.exception('add items2 error, shop_id=%s, campaign_id=%s, e=%s' % (shop_id, camp_id, e))
        msg = '添加成功 %s 个宝贝%%s,添加失败 %s 个宝贝!' % (0, len(new_item_dict))
        errMsg = "未知错误"
예제 #7
0
파일: najax.py 프로젝트: Florence3546/CRM
def change_mntcfg_type(request):
    '''设置重点计划算法导向'''
    shop_id = int(request.user.shop_id)
    camp_id = int(request.POST.get('campaign_id', 0))
    mnt_type = int(request.POST.get('mnt_type', 1))
    opter, opter_name = analysis_web_opter(request)
    mnt_bid_factor = float(request.POST.get('mnt_bid_factor', 0))
    mnt_camp_coll.update({'shop_id': shop_id, '_id': camp_id}, {'$set': {'mnt_bid_factor': mnt_bid_factor}})
    opt_desc = '设置托管宝贝推广意向'
    change_mntcfg_type_log(shop_id = shop_id, campaign_id = camp_id, opt_desc = opt_desc, opter = opter, opter_name = opter_name)
    return {'errMsg':'', 'descr':opt_desc}
예제 #8
0
파일: najax.py 프로젝트: Florence3546/CRM
def submit_keyword(request):
    """提交关键词修改"""
    shop_id = int(request.user.shop_id)
    kw_list = json.loads(request.POST.get('submit_list', ''))
    opter, opter_name = analysis_web_opter(request)
    updated_id_list, _, _, failed_id_list = update_kws_8shopid(
        shop_id, kw_list, opter=opter, opter_name=opter_name)
    return {
        'update_kw': updated_id_list,
        'failed_kw': failed_id_list,
        'errMsg': ''
    }
예제 #9
0
def update_cfg(request, dajax):
    error_msg = ''
    shop_id = int(request.user.shop_id)
    campaign_id = request.POST['campaign_id']
    submit_data = json.loads(request.POST['submit_data'])
    mnt_type = int(request.POST.get('mnt_type', 1))
    opter, opter_name = analysis_web_opter(request)
    try:
        if submit_data.has_key('budget'):
            try:
                campaign = Campaign.objects.exclude('rpt_list').get(
                    shop_id=shop_id, campaign_id=campaign_id)
            except DoesNotExist, e:
                log.info('can not get campaign, campaign_id = %s' %
                         campaign_id)
                dajax.script('PTQN.light_msg("亲,请刷新页面重新操作!","red");')
                return dajax
            old_budget = campaign.budget
            new_budget = submit_data['budget']

            try:
                result_list, msg_list = update_campaign(
                    shop_id=shop_id,
                    campaign_id=int(campaign_id),
                    record_flag=False,
                    budget=new_budget,
                    use_smooth=campaign.is_smooth and 'true' or 'false',
                    opter=opter,
                    opter_name=opter_name)
                if 'budget' in result_list:
                    display_budget = lambda x: x == 20000000 and '不限' or ('%s元'
                                                                          % x)
                    descr = '日限额由%s,修改为%s' % (display_budget(
                        old_budget / 100), display_budget(new_budget))
                    udpate_cmp_budget_log(shop_id=shop_id,
                                          campaign_id=campaign_id,
                                          opt_desc=descr,
                                          opter=opter,
                                          opter_name=opter_name)
                else:
                    raise Exception('<br/>'.join(msg_list))
            except Exception, e:
                log.info('update campaign budget error, e = %s, shop_id = %s' %
                         (e, shop_id))
                if 'sub_msg":"日限额不得小于推广计划实时扣款金额' in str(e):
                    dajax.script('PTQN.light_msg("日限额不得小于推广计划实时扣款金额!","red");')
                else:
                    dajax.script('PTQN.light_msg("修改日限额失败","red");')
                return dajax
예제 #10
0
파일: najax.py 프로젝트: Florence3546/CRM
def mnt_campaign_setter(request):
    error_msg = None
    shop_id = int(request.user.shop_id)
    mnt_type = int(request.POST.get('mnt_type'))
    campaign_id = int(request.POST['campaign_id'])
    set_flag = int(request.POST['set_flag']) and True or False # 设置为托管计划或者终止托管计划
    opter, opter_name = analysis_web_opter(request)
    try:
        warn_msg_dict = {}
        if mnt_type not in [1, 2, 3, 4]:
            raise Exception("wrong_mnt_type")
        if set_flag:
            mnt_rt = int(request.POST.get('mnt_rt', 0)) # 是否启用实时引擎
            mnt_bid_factor = int(request.POST.get('mnt_bid_factor', 0))
            opt_wireless = int(request.POST.get('opt_wireless', 0))
            max_price = int(float(request.POST['max_price']) * 100)
            mobile_max_price = int(float(request.POST['mobile_max_price']) * 100)
            budget = int(request.POST['budget'])
            mnt_index = int(request.POST['mnt_index'])

            kwargs = {'area': int(request.POST.get('area', 0)),
                      'schedule': int(request.POST.get('schedule', 0)),
                      'platform': int(request.POST.get('platform', 0))}
            warn_msg_dict = MntMnger.set_mnt_camp(campaign_id = campaign_id, flag = set_flag, mnt_index = mnt_index,
                                                  mnt_type = mnt_type, opter = opter, opter_name = opter_name,
                                                  max_price = max_price, mobile_max_price = mobile_max_price, budget = budget,
                                                  mnt_rt = mnt_rt, mnt_bid_factor = mnt_bid_factor, opt_wireless = opt_wireless,
                                                  **kwargs)
        else:
            warn_msg_dict = MntMnger.set_mnt_camp(campaign_id = campaign_id, flag = set_flag, mnt_type = mnt_type, opter = opter, opter_name = opter_name)
    except Exception, e:
        log.info('mnt_campaign_setter error: %s, mnt_type: %s, campaign_id: %s, shop_id: %s,' % (e, mnt_type, campaign_id, shop_id))
        if str(e) == "no_permission":
            return {'errMsg':'', 'result':0, 'error_msg':'no_permission'}
        try:
            result, error_msg = json.loads(e.message)
        except:
            if hasattr(e, 'reason'):
                error_msg = (eval(e.reason))['error_response'].get('sub_msg', '淘宝发生未知错误,请联系顾问')
            else:
                error_msg = e.message
                if 'need to wait' in error_msg:
                    error_msg = 'API接口超限'
예제 #11
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_rt_engine_status(request):
    '''设置宝贝实时优化状态'''
    shop_id = int(request.user.shop_id)
    mnt_type = int(request.POST.get('mnt_type', 1))
    camp_id = int(request.POST['campaign_id'])
    status = int(request.POST['status'], 0)
    opter, opter_name = analysis_web_opter(request)
    errMsg = ''
    try:
        mnt_camp = MntCampaign.objects.get(shop_id = shop_id, campaign_id = camp_id, mnt_type = mnt_type)
        mnt_camp.mnt_rt = status
        mnt_camp.save()
        opt_desc = '关闭宝贝时实优化'
        if status:
            opt_desc = '开启宝贝实时优化'
        change_rt_engine_log(shop_id = shop_id, campaign_id = camp_id, opt_desc = opt_desc, opter = opter, opter_name = opter_name)
    except DoesNotExist, e:
        log.info('set adgroups mnt status error, e= %s, shop_id = %s, mnt_type = %s' % (e, shop_id, mnt_type))
        errMsg = '亲,请刷新页面重新操作!'
예제 #12
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_adgs_mnt(request):
    '''批量设置宝贝优化'''
    errMsg = ''
    adg_id_list = request.POST.getlist("adg_id_list[]")
    adg_id_list = [int(adg_id) for adg_id in adg_id_list]
    shop_id = int(request.user.shop_id)
    flag = int(request.POST['flag']) # 判断是加入托管还是取消托管
    mnt_type = int(request.POST.get('mnt_type', 1))
    camp_id = int(request.POST['camp_id'])
    use_camp_limit = int(request.POST.get('use_camp_limit', 1))
    limit_price = int(float(request.POST.get('limit_price', 0)) * 100)
    mobile_limit_price = int(float(request.POST.get('mobile_limit_price', 0)) * 100)
    opter, opter_name = analysis_web_opter(request)

    try:
        mnt_camp = MntCampaign.objects.get(shop_id = shop_id, campaign_id = camp_id, mnt_type = mnt_type)
    except DoesNotExist, e:
        log.info('set adgroups mnt status error, e= %s, shop_id = %s, mnt_type = %s' % (e, shop_id, mnt_type))
        errMsg = '亲,请刷新页面重新操作!'
        return {'errMsg':errMsg}
예제 #13
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_single_adg_mnt(request):
    '''单个宝贝托管设置'''
    errMsg = ''
    opt_desc = ''
    shop_id = int(request.user.shop_id)
    adg_id = int(request.POST['adg_id'])
    flag = int(request.POST['flag']) # 判断是加入托管还是取消托管
    mnt_type = int(request.POST.get('mnt_type', 1))
    camp_id = int(request.POST['camp_id'])
    use_camp_limit = int(request.POST.get('use_camp_limit', 1))
    limit_price = int(round_digit(float(request.POST.get('limit_price', 0)) * 100)) # 引入 round_digit 是为了解决 int(2.01*100) = 200 的 bug
    mobile_limit_price = int(round_digit(float(request.POST.get('mobile_limit_price', 0)) * 100))
    opter, opter_name = analysis_web_opter(request)

    try:
        mnt_camp = MntCampaign.objects.get(shop_id = shop_id, campaign_id = camp_id, mnt_type = mnt_type)
    except DoesNotExist, e:
        log.info('set adgroups mnt status error, e= %s, shop_id = %s, mnt_type = %s' % (e, shop_id, mnt_type))
        errMsg = '亲,请刷新页面重新操作!'
        return {'errMsg':errMsg}
예제 #14
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_cfg(request):
    error_msg = ''
    shop_id = int(request.user.shop_id)
    campaign_id = request.POST['campaign_id']
    submit_data = json.loads(request.POST['submit_data'])
    mnt_type = int(request.POST.get('mnt_type', 1))
    try:
        opter, opter_name = analysis_web_opter(request)
        if submit_data.has_key('budget'):
            try:
                campaign = Campaign.objects.get(shop_id = shop_id, campaign_id = campaign_id)
            except DoesNotExist, e:
                log.info('can not get campaign, campaign_id = %s' % campaign_id)
                return {'errMsg':'亲,请刷新页面重新操作!'}
            old_budget = campaign.budget
            new_budget = submit_data['budget']
            result_list, msg_list = update_campaign(shop_id = shop_id, campaign_id = int(campaign_id), record_flag = False, budget = new_budget,
                                                    use_smooth = campaign.is_smooth and 'true' or 'false', opter = opter, opter_name = opter_name)
            if 'budget' in result_list:
                display_budget = lambda x: x == 20000000 and '不限' or ('%s元' % x)
                opt_desc = '日限额由%s,修改为%s' % (display_budget(old_budget / 100), display_budget(new_budget))
                udpate_cmp_budget_log(shop_id = shop_id, campaign_id = campaign_id, opt_desc = opt_desc, opter = opter, opter_name = opter_name)
            else:
                return {'errMsg':'<br/>'.join(msg_list)}
        if submit_data.has_key('max_price'):
            try:
                mnt_campaign = MntCampaign.objects.get(shop_id = shop_id, campaign_id = campaign_id)
            except DoesNotExist, e:
                log.info('can not get mnt_campaign, campaign_id = %s' % campaign_id)
                return {'errMsg':'亲,请刷新页面重新操作!'}
            old_max_price = mnt_campaign.max_price
            old_mobile_max_price = mnt_campaign.real_mobile_max_price
            new_max_price = int(round(float(submit_data.get('max_price', old_max_price / 100.0)) * 100))
            new_mobile_max_price = int(round(float(submit_data.get('mobile_max_price', old_mobile_max_price / 100.0)) * 100))
            if new_max_price != old_max_price or new_mobile_max_price != old_mobile_max_price:
                mnt_campaign.max_price = new_max_price
                mnt_campaign.mobile_max_price = new_mobile_max_price
                change_cmp_maxprice_log(shop_id = shop_id, campaign_id = campaign_id, max_price = new_max_price, mobile_max_price = new_mobile_max_price,
                                        opter = opter, opter_name = opter_name)
                MntTaskMng.upsert_task(shop_id = shop_id, campaign_id = campaign_id, mnt_type = mnt_type, task_type = 2, adgroup_id_list = 'ALL')
            mnt_campaign.save()
예제 #15
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_mnt_adg(request):
    '''添加/取消托管adgroup'''
    errMsg = ''
    result = {}
    opter, opter_name = analysis_web_opter(request)

    try:
        shop_id = int(request.user.shop_id)
        camp_id = int(request.POST['camp_id'])
        mnt_adg_dict = json.loads(request.POST['mnt_adg_dict'])
        adg_id_list = [int(adg_id) for adg_id in mnt_adg_dict]

        flag = int(request.POST['flag']) # 1是加入托管, 0是取消托管, 2是将提交的宝贝批量加入托管并将剩下的宝贝取消托管
        if mnt_adg_dict:
            if flag == 2:
                MntMnger.set_mnt_adgroup(shop_id, camp_id, mnt_adg_dict, opter, opter_name)
            elif flag == 1:
                MntMnger.set_mnt_adgroup(shop_id, camp_id, mnt_adg_dict, opter, opter_name)
            elif flag == 0:
                MntMnger.unmnt_adgroup(shop_id, camp_id, adg_id_list, opter, opter_name)

            result['adg_id_list'] = adg_id_list
            result['flag'] = flag
        else:
            result['msg'] = '还未选择任何宝贝'
        # 更改或添加创意
        tapi = get_tapi(request.user)
        update_creative_dict = json.loads(request.POST.get('update_creative_dict', '{}'))
        new_creative_list = json.loads(request.POST.get('new_creative_list', '[]'))
        for creative_id, data in update_creative_dict.items():
            creative_id = int(creative_id)
            adgroup_id, title, img_url = data
            update_creative(tapi = tapi, shop_id = shop_id, adgroup_id = adgroup_id, creative_id = creative_id, title = title, img_url = img_url, opter = opter, opter_name = opter_name)
        if new_creative_list:
            add_creative(tapi = tapi, shop_id = shop_id, campaign_id = camp_id, crt_arg_list = new_creative_list, opter = opter, opter_name = opter_name)
        result['success_msg'] = '将 %s 个宝贝%s托管' % (len(adg_id_list), (flag and '加入' or '取消'))
        result['success_count'] = len(adg_id_list)
    except Exception, e:
        log.info('set adgroups mnt status error, e= %s, shop_id = %s' % (e, request.user.shop_id))
        errMsg = '托管宝贝失败,请与客服联系'
예제 #16
0
파일: najax.py 프로젝트: Florence3546/CRM
def update_prop_status(request):
    """修改托管状态,包含两个状态,计划是否暂停与托管是否暂停,一改同时改"""
    try:
        campaign_id = int(request.POST['campaign_id'])
        status = bool(int(request.POST['status']))
        shop_id = int(request.user.shop_id)
        mnt_type = int(request.POST.get('mnt_type', 0))
        opter, opter_name = analysis_web_opter(request)
        online_status, mnt_status, opt_desc = status and ('online', 1, '开启自动优化') or ('offline', 0, '暂停自动优化')
        result_list, msg_list = update_campaign(shop_id = shop_id, campaign_id = campaign_id, online_status = online_status, opter = opter, opter_name = opter_name)
        if 'online_status'not in result_list:
            return {'errMsg':'<br/>'.join(msg_list)}
        MntCampaign.objects.filter(shop_id = shop_id, campaign_id = campaign_id).update(set__mnt_status = mnt_status)
        data_type = 108
        if mnt_status:
            data_type = 107
        set_cmp_mnt_status_log(shop_id = shop_id, campaign_id = campaign_id, opt_desc = opt_desc, data_type = data_type, opter = opter, opter_name = opter_name)
        # 同步任务状态,托管暂停、优化暂停;托管启动、优化启动
        MntTaskMng.trigger_task_status(shop_id = shop_id, campaign_id = campaign_id, trigger_flag = status)
        return {'errMsg':'', 'status':status and 1 or 0}
    except Exception, e:
        log.info('update mnt campaign prop status error ,e = %s, shop_id = %s' % (e, shop_id))
        return {'errMsg':"%s失败,请刷新页面重新操作!" % opt_desc}
예제 #17
0
    try:
        Attention.change_attention_state(shop_id, adgroup_id, keyword_id,
                                         False)
        result = [keyword_id]
    except Exception, e:
        log.error('cancel attention error, shop_id=%s, keyword_id=%s, e=%s' %
                  (shop_id, keyword_id, e))
        result = []
    finally:
        dajax.script("PTQN.keyword_manage.call_back_cancel_attention(%s)" %
                     (json.dumps(result)))
        return dajax

    shop_id = int(request.user.shop_id)
    kw_list = json.loads(request.POST.get('data', []))
    opter, opter_name = analysis_web_opter(request)
    updated_id_list, _, _, fail_update_id_list = update_kws_8shopid(
        shop_id=shop_id, kw_list=kw_list, opter=opter, opter_name=opter_name)
    result = {'success': updated_id_list, 'fall': fail_update_id_list}
    dajax.script("PTQN.keyword_manage.call_back_submit(%s)" %
                 (json.dumps(result)))
    return dajax


def auto_set_attention_kw(request, dajax):
    '''一键设置关键词'''
    from apps.qnyd.biz import set_attention_kw

    shop_id = int(request.user.shop_id)
    set_attention_kw(shop_id=shop_id)
    dajax.script('window.location.href="%s";' % ('./keyword_manage'))
예제 #18
0
def mnt_campaign(request, campaign_id, template='mnt_campaign.html'):
    shop_id = int(request.user.shop_id)
    campaign_id = int(campaign_id)
    mnt_list = []
    mnt_campaign_dict = dict(
        MntCampaign.objects.filter(shop_id=shop_id).values_list(
            'campaign_id', 'mnt_type'))
    campaign_list = list(Campaign.objects.filter(shop_id=shop_id))
    mnt_desc_dict = dict(MNT_TYPE_CHOICES)
    campaign = None
    for camp in campaign_list:
        camp.mnt_type = mnt_campaign_dict.get(camp.campaign_id, 0)
        camp.mnt_name = mnt_desc_dict.get(camp.mnt_type, '').replace(
            '托管', '') if camp.mnt_type else '手动'
        mnt_list.append({
            'campaign_id': camp.id,
            'name': camp.title,
            'mnt_type_name': camp.mnt_name
        })
        if camp.id == campaign_id:
            campaign = camp
    if campaign is None:
        return render_to_error(request, "该计划不存在,请返回页面重新操作")

    snap_list = campaign.get_snap_list(rpt_days=7)
    start_time = None
    mnt_days = 0
    try:
        mnt_camp = MntCampaign.objects.get(shop_id=shop_id,
                                           campaign_id=campaign_id)
        campaign.optimize_time = mnt_camp.optimize_time and time_humanize(
            mnt_camp.optimize_time) or "0"
        campaign.mnt_type = mnt_camp.mnt_type
        campaign.max_num = mnt_camp.max_num
        campaign.max_price = '%.2f' % (mnt_camp.max_price / 100.0)
        campaign.mobile_max_price = '%.2f' % (mnt_camp.real_mobile_max_price /
                                              100.0)
        campaign.mnt_desc = mnt_camp.get_mnt_type_display()
        campaign.is_active = mnt_camp.is_active
        campaign.quick_optime = mnt_camp.quick_optime
        campaign.mnt_bid_factor = mnt_camp.mnt_bid_factor
        campaign.mnt_rt = mnt_camp.mnt_rt
        start_time = datetime_2string(mnt_camp.start_time, '%Y年%m月%d日')
        mnt_days = days_diff_interval(mnt_camp.start_time.date())
    except DoesNotExist:
        campaign.mnt_type = 0
        campaign.max_num = 0
        campaign.max_price = 0.00
        campaign.mobile_max_price = 0.00
        campaign.mnt_desc = "未托管计划"
        campaign.is_active = False
        campaign.quick_optime = datetime.datetime.now()
        campaign.mnt_bid_factor = 50
        campaign.mnt_rt = 0

    is_smooth = campaign.is_smooth and 1 or 0
    budget = '%.0f' % (campaign.budget / 100.0)

    from apps.web.utils import get_trend_chart_data
    category_list, series_cfg_list = get_trend_chart_data(data_type=2,
                                                          rpt_list=snap_list)
    snap_list.reverse()
    camp_dict = dict(
        Campaign.objects.filter(shop_id=shop_id).values_list(
            'campaign_id', 'title'))
    mnt_opter, _ = analysis_web_opter(request)
    return render_to_response(template, {
        'camp': campaign,
        'mnt_list': mnt_list,
        'snap_list': snap_list,
        'is_smooth': is_smooth,
        'budget': budget,
        'category_list': category_list,
        'series_cfg_list': json.dumps(series_cfg_list),
        'camp_dict': camp_dict,
        'mnt_opter': mnt_opter,
        'add_adgroup': campaign.mnt_type,
        'start_time': start_time,
        'mnt_days': mnt_days
    },
                              context_instance=RequestContext(request))