示例#1
0
def piechart(self,rc):
    user_count = {}
    for (user_name,req_id) in getDistinct(Log,'user_name','req_id'):
        if user_name == None:
            continue
        if not user_count.has_key(user_name):
            user_count[user_name] = 0
        user_count[user_name] += 1
    kw = {}
    kw['data'] = [('user','number of requests')]
    kw['title']='Log entries by user'
    for(k,v) in sorted(user_count.items(),key=itemgetter(1),reverse=True):
        kw['data'].append((k,v))
    rc.ctx['by_user'] = pieChart(rc,'by_user',**kw)


    view_count = {}

    for (vc,vn,ri) in getDistinct(Log,'view_class','view_name','req_id'):
        if vc == None or vn == None or ri == None:
            continue
        key = "%s:%s"%(vc,vn)
        if not view_count.has_key(key):
            view_count[key] = 0
        view_count[key] += 1

    kw = {}
    kw["data"] = [('view_name','request count')]
    kw['title']  = 'Log entries by view_name'
    for (k,v) in sorted(view_count.items(),key=itemgetter(1),reverse=True):
        kw['data'].append((k,v))
    rc.ctx['by_view'] = pieChart(rc,'by_view',**kw)

    return self.render(rc)
示例#2
0
文件: tools.py 项目: crc32a/DjangoExp
def pieCount(rc,div_id,title,cols,modelClass,**kw):
    p = {}
    p.update(kw)
    p["title"] = title
    labels = kw.pop("labels",("x","y",))
    p["data"] = [(labels[0],labels[1])]

    q = modelClass.objects.values(*cols)
    q = q.annotate(count=Count('id'))
    q = q.order_by('count')
    for counts in q:
        name = ""
        val = counts.pop("count")
        for col in cols[:-1]:
            name += "%s:"%counts[col]
        for col in cols[-1:]:
            name += "%s"%counts[col]
        p["data"].append((name,val))
    return pieChart(rc,div_id,**p)