# -*- coding: utf-8 -*- # !/usr/bin/env python """ 广告系统需要做一次稳定性升级 1. 将所有的广告记录从redis移动回mongodb 1.1 将老的广告记录充实起来 2. 离线任务需要完成 """ import os import sys #: current_dir - 2 PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) from script.base import init_env, get_logger logger = get_logger(__name__) init_env(interactive=True) from apps.web.ad.utils import AdRecordProxy, timestamp_to_dt from apps.web.ad.models import Advertisement, AdRecord, nullable from apps.web.management.models import Manager from apps.web.dealer.models import Dealer from apps.web.agent.models import Agent from apps.web.user.models import MyUser from apps.web.device.models import Device, Group def move_all_adRecordProxies_to_adRecord(): for proxy in AdRecordProxy.all(): if AdRecord.objects(logicalCode=proxy.logicalCode, openId=proxy.openId, adId=proxy.adId): continue else: record = AdRecord() def complete_old_ad_record(): """ 将老的广告缺省的详细信息填满 :return: """ for record in AdRecord.objects(): ad = nullable(Advertisement.get_by_adId(record.adId)) dev = Device.get_dev(record.devNo) group = Group.get_group(record.groupId) or {} user = nullable(MyUser.objects(openId=record.openId, groupId=record.groupId).first()) sexMap = {0: '-', 1: u'男', 2: u'女', '': '-'} if record.agentId: agent = Agent.objects(id=str(record.agentId)).first() agentName = agent.nickname else: agentName = '' if record.dealerId: dealerName = Dealer.objects(id=str(record.dealerId)).first().nickname else: dealerName = '' ad_record_payload = { 'adId': record.adId, 'adName': ad.name, 'agentPrice': ad.agentPrice, 'dealerPrice': ad.dealerPrice, 'price': ad.price, 'agentName': agentName, 'dealerName': dealerName, 'logicalCode': dev['logicalCode'], 'nickname': user.nickname, 'sex': sexMap[user.sex], 'openId': user.openId, 'devType': dev['devType'].get('name'), 'address': group.get('address', ''), 'groupName': group.get('groupName', ''), #: filters 'groupId': record.groupId, 'dealerId': record.dealerId, 'agentId': record.agentId, 'devNo': record.devNo, #: user actions 'clicks': record.clicks, 'shows': record.shows, 'converted': record.converted } record.update(**ad_record_payload)