Exemplo n.º 1
0
def get_leaf_dealer_for_bm(region=None):
    dealertype_bm = DealerType.objects.get(name_en='BMW')
    if not region:
        return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm).order_by('listorder', 'id')
    else:
        sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm, id__in=sub_dealer_id_list).order_by('listorder', 'id')
Exemplo n.º 2
0
 def _inner():
     all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
     all_dealer_id_list = [d.id for d in term.dealers.filter(id__in=all_dealer_id_list)]
     all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')]
     id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list)
     dealer_count = len(id_set)
     return dealer_count
Exemplo n.º 3
0
def get_leaf_dealer_for_bm(term, region=None):
    dealertype_bm = DealerType.objects.get(name_en='BMW')
    if not region:
        return term.dealers.filter(has_child=False, dealertype=dealertype_bm).order_by('listorder', 'id')
    else:
        sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)]
        return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm, id__in=sub_dealer_id_list).order_by('listorder', 'id').exclude(termid='')
Exemplo n.º 4
0
def get_leaf_dealer_other_than_bm(term, region=None):
    dealertype_list = DealerType.objects.exclude(name_en__in=['BMW', 'MINI'])
    if not region:
        return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list).order_by('dealertype__name_en', 'listorder')
    else:
        sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        #sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)]
        return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list, id__in=sub_dealer_id_list).order_by('dealertype__name_en', 'listorder')
Exemplo n.º 5
0
def get_regional_done_survey_count(region, term):
    '''按区域汇总的完成数查询接口'''
    sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
    all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')]
    sub_dealer_id_set = set(sub_dealer_id_list) & set(all_bmw_dealer_id_list)
    
    dealer_id_list = [paper['dealer_id'] for paper in Paper.objects.filter(term=term, status__gt=enums.PAPER_STATUS_INIT, dealer__id__in=sub_dealer_id_set).values('dealer_id')]
    return len(set(dealer_id_list))
Exemplo n.º 6
0
 def _inner():
     all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
     all_dealer_id_list = [
         d.id for d in term.dealers.filter(id__in=all_dealer_id_list)
     ]
     all_bmw_dealer_id_list = [
         dealer['id'] for dealer in Dealer.objects.filter(
             dealertype=get_dealertype_BMW(), has_child=False).values('id')
     ]
     id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list)
     dealer_count = len(id_set)
     return dealer_count
Exemplo n.º 7
0
def get_leaf_dealer_other_than_bm(term, region=None):
    dealertype_list = DealerType.objects.exclude(name_en__in=['BMW', 'MINI'])
    if not region:
        return Dealer.objects.filter(has_child=False,
                                     dealertype__in=dealertype_list).order_by(
                                         'dealertype__name_en', 'listorder')
    else:
        sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        #sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)]
        return Dealer.objects.filter(has_child=False,
                                     dealertype__in=dealertype_list,
                                     id__in=sub_dealer_id_list).order_by(
                                         'dealertype__name_en', 'listorder')
Exemplo n.º 8
0
def get_dealer_count_by_region(region, refresh=False):
    cache_key = 'dealer_count_by_region_%s' % region.id
    if refresh:
        dealer_count = None        
    else:
        dealer_count = cache.get(cache_key)
    
    if dealer_count is None:
        all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')]
        id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list)
        dealer_count = len(id_set)
        cache.set(cache_key, dealer_count, 24 * 60 * 60)
    return dealer_count
Exemplo n.º 9
0
def get_leaf_dealer_for_mini(term, region=None):
    dealertype_bm = DealerType.objects.get(name_en='MINI')
    if not region:
        return term.dealers.filter(has_child=False,
                                   dealertype=dealertype_bm).order_by(
                                       'listorder', 'id')
    else:
        sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region)
        sub_dealer_id_list = [
            d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)
        ]
        return Dealer.objects.filter(has_child=False,
                                     dealertype=dealertype_bm,
                                     id__in=sub_dealer_id_list).order_by(
                                         'listorder', 'id')
Exemplo n.º 10
0
def get_dealer_reports(dealer_type_tuple, regional, term_id):
    '''提供某一种或多种类型的经销商访问情况报告的查询接口,返回值为(经销商代码,城市,省份,经销商名称,经销商本期最终得分,报告)类型的queryset
    @param dealer_type_tuple:经销商类型ID值组成的tuple
    @param regional:区域对象
    @param term_id:期数ID值
    '''
    try:
        c, con = DbUtils.cursor()
        dealer_id_list = utils.get_sub_leaf_dealer_id_list(regional)
        dealer_id_list = tuple(dealer_id_list)
        if len(dealer_type_tuple) == 1:
            dealer_type_tuple = dealer_type_tuple[0]
            c.execute('SELECT mc_dealer.name, mc_dealer.city_cn, mc_dealer.city_en, mc_dealer.province_cn, mc_dealer.province_en, mc_dealer.name_cn, mc_dealer.name_en, mc_reportdata.total, mc_report.survey_code FROM mc_dealer LEFT JOIN mc_report ON mc_dealer.id = mc_report.dealer_id LEFT JOIN mc_reportdata ON mc_report.id = mc_reportdata.id AND mc_report.term_id= %s WHERE mc_dealer.id in %s AND mc_dealer.dealertype_id = %s' % (term_id, dealer_id_list, dealer_type_tuple))
        else:
            c.execute('SELECT mc_dealer.name, mc_dealer.city_cn, mc_dealer.city_en, mc_dealer.province_cn, mc_dealer.province_en, mc_dealer.name_cn, mc_dealer.name_en, mc_reportdata.total, mc_report.survey_code FROM mc_dealer LEFT JOIN mc_report ON mc_dealer.id = mc_report.dealer_id LEFT JOIN mc_reportdata ON mc_report.id = mc_reportdata.id AND mc_report.term_id= %s WHERE mc_dealer.id in %s AND mc_dealer.dealertype_id in %s' % (term_id, dealer_id_list, dealer_type_tuple))
        result = c.fetchall()
    finally:
        if c:
            c.close()
        if con:
            con.close() 
    return result