# -*- coding: utf-8 -*- # !/usr/bin/env python import logging import arrow from django.conf import settings from mongoengine import Q from apps.web.agent.models import Agent from apps.web.core.utils import JsonErrorResponse from apps.web.dealer.models import Dealer from apps.web.device.models import Device from apps.web.management.models import Manager logger = logging.getLogger(__name__) def querySimCardList(searchKey, simCardSource, simCardStatus, startTime, endTime, pageIndex, pageSize): if startTime is None or endTime is None: return JsonErrorResponse(description = u'没有给过期时间') start_time = arrow.get(startTime, 'YYYY-MM-DD', tzinfo = settings.TIME_ZONE) end_time = arrow.get(endTime, 'YYYY-MM-DD', tzinfo = settings.TIME_ZONE).shift(days = 1) query = Device.generate_sim_expire_query( expire_start_date = start_time.naive, expire_end_date = end_time.naive, sim_source = simCardSource, sim_status = simCardStatus ) cursor = Device.search(searchKey).filter(Q(__raw__ = query)) total = cursor.count() objs = cursor.paginate(pageIndex, pageSize) dataList = [] for obj in objs: # type: Device try: dealer = Dealer.objects.get(id = obj.ownerId) agent = Agent.objects.get(id = dealer.agentId) manager = Manager.objects.get(id = agent.managerId) dataList.append({ 'id': str(obj.id), 'imei': obj.devNo, 'iccid': obj.iccid, 'simCardStatus': obj.simStatus, 'simCardBrand': obj.simSource, 'expireDate': obj.fixedSimExpireDate, 'logicalCode': obj.logicalCode, 'dealerNickname': dealer.nickname, 'dealerUsername': dealer.username, 'agentNickname': agent.nickname, 'agentUsername': agent.username, 'managerNickname': manager.nickname, 'managerUsername': manager.username, }) except Exception, e: logger.error('get sim card info failure. logicalCode = {}.'.format(obj.logicalCode)) return total, dataList