helpers.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import logging
  4. import arrow
  5. from django.conf import settings
  6. from mongoengine import Q
  7. from apps.web.agent.models import Agent
  8. from apps.web.core.utils import JsonErrorResponse
  9. from apps.web.dealer.models import Dealer
  10. from apps.web.device.models import Device
  11. from apps.web.management.models import Manager
  12. logger = logging.getLogger(__name__)
  13. def querySimCardList(searchKey, simCardSource, simCardStatus, startTime, endTime, pageIndex, pageSize):
  14. if startTime is None or endTime is None:
  15. return JsonErrorResponse(description = u'没有给过期时间')
  16. start_time = arrow.get(startTime, 'YYYY-MM-DD', tzinfo = settings.TIME_ZONE)
  17. end_time = arrow.get(endTime, 'YYYY-MM-DD', tzinfo = settings.TIME_ZONE).shift(days = 1)
  18. query = Device.generate_sim_expire_query(
  19. expire_start_date = start_time.naive,
  20. expire_end_date = end_time.naive,
  21. sim_source = simCardSource,
  22. sim_status = simCardStatus
  23. )
  24. cursor = Device.search(searchKey).filter(Q(__raw__ = query))
  25. total = cursor.count()
  26. objs = cursor.paginate(pageIndex, pageSize)
  27. dataList = []
  28. for obj in objs: # type: Device
  29. try:
  30. dealer = Dealer.objects.get(id = obj.ownerId)
  31. agent = Agent.objects.get(id = dealer.agentId)
  32. manager = Manager.objects.get(id = agent.managerId)
  33. dataList.append({
  34. 'id': str(obj.id),
  35. 'imei': obj.devNo,
  36. 'iccid': obj.iccid,
  37. 'simCardStatus': obj.simStatus,
  38. 'simCardBrand': obj.simSource,
  39. 'expireDate': obj.fixedSimExpireDate,
  40. 'logicalCode': obj.logicalCode,
  41. 'dealerNickname': dealer.nickname,
  42. 'dealerUsername': dealer.username,
  43. 'agentNickname': agent.nickname,
  44. 'agentUsername': agent.username,
  45. 'managerNickname': manager.nickname,
  46. 'managerUsername': manager.username,
  47. })
  48. except Exception, e:
  49. logger.error('get sim card info failure. logicalCode = {}.'.format(obj.logicalCode))
  50. return total, dataList