upgrade_dev_sim_info.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. """
  4. 将重复的用户按组归并
  5. """
  6. import os
  7. import sys
  8. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  9. sys.path.insert(0, PROJECT_ROOT)
  10. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.testing"})
  11. import django
  12. django.setup()
  13. from apps.web.dealer.models import DealerRechargeRecord
  14. from apps.web.device.models import Device,SIMCard
  15. from apps.web.constant import Const
  16. print u'导入所有充值的设备数据,以修改simStatus字段'
  17. #先更新所有充值过的设备的sim卡状态为chargedUnupdated.这样在升级期间,可以保证不会影响用户的使用
  18. chargedDevNos = []
  19. objs = DealerRechargeRecord.objects.filter(status = 'Paid')
  20. countAll,devCount = 0,0
  21. for obj in objs:
  22. chargedDevNos.extend([item['devNo'] for item in obj.items])
  23. Device.get_collection().update({'devNo':{'$in':chargedDevNos}},{'$set':{'simStatus':'chargedUnupdated'}},multi = True)
  24. Device.invalid_many_device_cache(chargedDevNos)
  25. print u'完成导入已经充值的数据'
  26. print u'将sim卡的超时时间同步到设备上'
  27. #更新sim卡的相关信息。把所有sim卡信息导入device表。没有sim卡过期时间的,以expireTime为准。确保所有的卡都有sim卡过期时间
  28. simObjs = SIMCard.objects.all()
  29. simList = [obj for obj in simObjs]
  30. count = 0
  31. for simObj in simList:#这个地方有问题,请参考导入excel的任务,需要更新simStatus
  32. expireTime = simObj.expireTime
  33. iccid = simObj.iccid
  34. try:
  35. #直接查询device的数据,检查是否需要更新
  36. devObj = Device.objects(iccid = iccid).only('simExpireDate','simStatus').get()
  37. except Exception,e:
  38. continue
  39. #6月份过期的,不要修改simStatus,等到15号sim卡的数据出来后,再刷新
  40. if expireTime.month == 2019 and expireTime.month == 6:
  41. continue
  42. try:
  43. if (devObj.simExpireDate - expireTime).days > 0 :
  44. print iccid,'device sim ',devObj.simExpireDate,'sim',expireTime
  45. count += 1
  46. except Exception,e:
  47. print('save dev obj iccid =%s error=%s' % (iccid,e))
  48. if count % 300 == 0:
  49. print u'同步sim卡超时时间数目为: ',count
  50. ##########################
  51. print u'完成 sim卡的超时时间同步'
  52. print u'将没有sim卡超时时间的数据,用expireDate替换掉'
  53. objs = Device.objects.filter(ownerId__nin = [None, ""], simExpireDate__in = [None, ""])
  54. count = 0
  55. devList = [obj for obj in objs]
  56. for dev in devList:
  57. try:
  58. Device.get_collection().update({'devNo':dev.devNo},{'$set':{'simExpireDate':dev.expireDate}})
  59. count += 1
  60. except Exception,e:
  61. print('update device expired error = %s ' % e)
  62. continue
  63. if count % 300 == 0:
  64. print u'完成sim卡的超时时间设置数目',count
  65. print u'完成sim卡空超时时间的个数为:',count
  66. print u'全部完成'