# -*- coding: utf-8 -*- #!/usr/bin/env python __author__ = 'Administrator' """ 用于升级发布需要执行的脚本 """ import os import sys import json #: 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 init_env(interactive=True) logger = get_logger(__name__) from apps.web.dealer.models import Dealer from apps.web.device.models import Device, DeviceType from apps.web.user.models import RechargeRecord, MyUser logger.info('start excute script ......') #: 升级设备报错属性 result = Device.get_collection().update({},{'$set':{'isFault':'no'}},upsert=True,multi=True) logger.info('update device isFault result= %s' % result) #: 添加设备套餐price字段 logger.info('start update devtype ......') types = DeviceType.objects.all() for devType in types: newPackages = [] for package in devType.package: if 'price' in package: continue newPackages.append( {'coins':package['coins'], 'price': package['coins'], 'name':package['name'],'time':package['time']}) if newPackages: devType.package = newPackages devType.save() logger.info('update devtype OK!') logger.info('start update dealer default washconfig ......') dealers = Dealer.objects.all() for dealer in dealers: logger.info('modifying dealer(%s)' % (dealer.nickname,)) newDefaultPackages = {} if not dealer.defaultWashConfig: continue for devType, packages in dealer.defaultWashConfig.items(): newPackages = [] for package in packages: print package newPackages.append({ 'coins': package['coins'], 'price': package['coins'], 'name':package['name'], 'time':package['time'] }) newDefaultPackages[devType] = newPackages if newDefaultPackages: dealer.update(defaultWashConfig=newDefaultPackages) logger.info('update dealer default washconfig OK!') logger.info('update devices\'s washconfigs') for device in Device.objects(ownerId__exists=True): if device.washConfig != {}: washConfig = {} for packageId, rule in device.washConfig.items(): if 'price' in rule: continue _ = { 'coins': rule['coins'], 'price': rule['coins'], 'name': rule['name'], 'time': rule['time'] } washConfig[packageId] = _ if washConfig: logger.info('washconfig changed to %s' % (json.dumps(washConfig),)) device.update(washConfig=washConfig) logger.info('update dealer default config OK!') #: 升级部分支付宝用户的头像问题 logger.info('change avatar info') for user in MyUser.objects(gateway='alipay'): if user.extra.get('avatar'): logger.info('operate on user(nickname=%s)' % user.nickname ) user.update(avatar=user.extra['avatar']) #: 升级充值记录 for record in RechargeRecord.objects(wxOrderNo__ne=u'老板退币', result='success'): logger.info('operating recharge Record %s' % (record.wxOrderNo,)) record.update(via='recharge')