# -*- coding: utf-8 -*- # !/usr/bin/env python import os from base import init_env os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.production") init_env(interactive=False) from apps.web.device.models import Device from apps.web.dealer.models import Dealer from apps.web.device.models import Group from bson.json_util import dumps from apps.web.user.models import MyUser old_dealer_id = 'None' new_dealer_id = '' new_group_id = '' logicalCodes = [] old_group_ids = [] for logicalCode in logicalCodes: device = Device.get_collection().find_one({'logicalCode': logicalCode}) if device['ownerId'] != old_dealer_id: print 'error {}'.format(logicalCode) continue print dumps(device) old_group_id = device['groupId'] old_group_ids.append(old_group_id) Device.get_collection().update_one({'logicalCode': logicalCode, 'groupId': old_group_id}, {'$set': {'ownerId': new_dealer_id, 'groupId': new_group_id}}) Device.invalid_device_cache(device['devNo']) Device.invalid_group_device_list_cache([old_group_id, new_group_id]) # 备份用户 # for user in MyUser.get_collection().find({'groupId':{'$in': old_group_ids}}): # print dumps(user) # 迁移用户 # users = MyUser.objects(groupId__in=old_group_ids) # for user in users: # type: MyUser # balance = user.balance # total_consume = user.total_consumed # total_charged = user.total_recharged # # print 'openId = {}, groupId = {}, newGroupId = {}, balance = {}, totalc = {}, totalr = {}'.format( # user.openId, user.groupId, new_group_id, balance, total_consume, total_charged) # # try: # user.update(groupId=new_group_id) # print 'finished, openId = {}, groupId = {}'.format(user.openId, new_group_id) # except Exception as e: # # print(e) # new_user = MyUser.objects(openId=user.openId, groupId=new_group_id).first() # if new_user: # new_user.update(inc__balance=balance, inc__total_recharged=total_charged, inc__total_consumed=total_consume) # user.delete() # print 'finished2, openId = {}, groupId = {}'.format(new_user.openId, new_user.groupId) # else: # print 'failure, openId = {}, groupId = {}'.format(user.openId, user.groupId)