# -*- coding: utf-8 -*- # !/usr/bin/env python import os, sys PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'configs.production') from script.base import init_env init_env(interactive = False) from apps.web.device.models import Group from apps.web.device.models import Device from apps.web.user.models import RechargeRecord, ConsumeRecord, CardConsumeRecord, VCardConsumeRecord, \ CardRechargeOrder, CardRechargeRecord, MyUser from apps.web.dealer.models import VirtualCard def reload_all(): dealers = Dealer.objects.all() for dealer in dealers: Dealer.get_dealer(str(dealer.id)) Group.get_own_and_partner_group_list(str(dealer.id)) codes = DriverCode.objects.all() for code in codes: DriverCode.get_driver_adapter(code) groups = Groups.objects.all() for group in groups: Group.get_group(str(group.id)) duplicate_records = Group.get_collection().aggregate([ {'$group': { '_id': {'firstField': "$ownerId", "secondField": "$groupName"}, 'uniqueIds': {'$addToSet': "$_id"}, 'count': {'$sum': 1} }}, {'$match': { 'count': {'$gt': 1} }} ], allowDiskUse = True) for duplicate_record in duplicate_records: if duplicate_record['count'] >= 2: print "duplicate ids = %s" % str(duplicate_record['uniqueIds']) lived = duplicate_record['uniqueIds'][0] deleted_list = duplicate_record['uniqueIds'][1:duplicate_record['count']] for groupId in deleted_list: Device.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) RechargeRecord.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) ConsumeRecord.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) CardConsumeRecord.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) VCardConsumeRecord.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) CardRechargeOrder.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) CardRechargeRecord.get_collection().update({'groupId': str(groupId)}, {'$set': {'groupId': str(lived)}}, multi = True, upsert = False) Group.get_collection().delete_many({'_id': {'$in': deleted_list}}) print 'over'