upgrade_1212.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. __author__ = 'Administrator'
  4. """
  5. 用于升级发布需要执行的脚本
  6. """
  7. import os
  8. import sys
  9. import json
  10. #: current_dir - 2
  11. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  12. sys.path.insert(0, PROJECT_ROOT)
  13. from script.base import init_env, get_logger
  14. init_env(interactive=True)
  15. logger = get_logger(__name__)
  16. from apps.web.dealer.models import Dealer
  17. from apps.web.device.models import Device, DeviceType
  18. from apps.web.user.models import RechargeRecord, MyUser
  19. logger.info('start excute script ......')
  20. #: 升级设备报错属性
  21. result = Device.get_collection().update({},{'$set':{'isFault':'no'}},upsert=True,multi=True)
  22. logger.info('update device isFault result= %s' % result)
  23. #: 添加设备套餐price字段
  24. logger.info('start update devtype ......')
  25. types = DeviceType.objects.all()
  26. for devType in types:
  27. newPackages = []
  28. for package in devType.package:
  29. if 'price' in package:
  30. continue
  31. newPackages.append(
  32. {'coins':package['coins'], 'price': package['coins'], 'name':package['name'],'time':package['time']})
  33. if newPackages:
  34. devType.package = newPackages
  35. devType.save()
  36. logger.info('update devtype OK!')
  37. logger.info('start update dealer default washconfig ......')
  38. dealers = Dealer.objects.all()
  39. for dealer in dealers:
  40. logger.info('modifying dealer(%s)' % (dealer.nickname,))
  41. newDefaultPackages = {}
  42. if not dealer.defaultWashConfig:
  43. continue
  44. for devType, packages in dealer.defaultWashConfig.items():
  45. newPackages = []
  46. for package in packages:
  47. print package
  48. newPackages.append({
  49. 'coins': package['coins'],
  50. 'price': package['coins'],
  51. 'name':package['name'],
  52. 'time':package['time']
  53. })
  54. newDefaultPackages[devType] = newPackages
  55. if newDefaultPackages:
  56. dealer.update(defaultWashConfig=newDefaultPackages)
  57. logger.info('update dealer default washconfig OK!')
  58. logger.info('update devices\'s washconfigs')
  59. for device in Device.objects(ownerId__exists=True):
  60. if device.washConfig != {}:
  61. washConfig = {}
  62. for packageId, rule in device.washConfig.items():
  63. if 'price' in rule:
  64. continue
  65. _ = {
  66. 'coins': rule['coins'],
  67. 'price': rule['coins'],
  68. 'name': rule['name'],
  69. 'time': rule['time']
  70. }
  71. washConfig[packageId] = _
  72. if washConfig:
  73. logger.info('washconfig changed to %s' % (json.dumps(washConfig),))
  74. device.update(washConfig=washConfig)
  75. logger.info('update dealer default config OK!')
  76. #: 升级部分支付宝用户的头像问题
  77. logger.info('change avatar info')
  78. for user in MyUser.objects(gateway='alipay'):
  79. if user.extra.get('avatar'):
  80. logger.info('operate on user(nickname=%s)' % user.nickname )
  81. user.update(avatar=user.extra['avatar'])
  82. #: 升级充值记录
  83. for record in RechargeRecord.objects(wxOrderNo__ne=u'老板退币', result='success'):
  84. logger.info('operating recharge Record %s' % (record.wxOrderNo,))
  85. record.update(via='recharge')