Changeset 3089 in products for quintagroup.analytics


Ignore:
Timestamp:
Mar 31, 2011 10:51:07 AM (13 years ago)
Author:
mylan
Message:

Clarify logic of size statistycs view

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.analytics/branches/update_mt/quintagroup/analytics/browser/views.py

    r3088 r3089  
    538538    return '%.2f %sB' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude]) 
    539539 
     540def getSize(brain): 
     541    return float(brain.getObjSize.split()[0])*( 
     542                 brain.getObjSize.endswith('kB') and 1024 \ 
     543                 or brain.getObjSize.endswith('MB') and 1024*1024 \ 
     544                 or 1) 
     545 
     546 
    540547class SizeByPath(BrowserView): 
    541548    def __init__(self, context, request): 
     
    549556        self.basepath = bpath and "/"+bpath.strip("/") or "" 
    550557 
    551     # def _getInfo(self, k, path, size): 
    552     #     obpath = "%s/%s" % (path, k) 
    553     #     return {'path': obpath, 
    554     #             'href': "%s/%s" % (self.purl(), obpath), 
    555     #             'size': size, 
    556     #             'human_size': "%d b" % size} 
     558 
     559    def _brainsByPath(self, path): 
     560        return self.cat(path=path, Language="all") 
    557561 
    558562    def _walk(self, obj, path): 
    559  
    560         def getSize(brain): 
    561             return float(brain.getObjSize.split()[0])*( 
    562                          brain.getObjSize.endswith('kB') and 1024 \ 
    563                          or brain.getObjSize.endswith('MB') and 1024*1024 \ 
    564                          or 1) 
    565  
    566         brains = self.cat(path=path, Language="all") 
    567563        result = {} 
    568         for b in brains: 
     564        for b in self._brainsByPath(path): 
    569565            bpath = b.getPath()[len(path):] 
    570566            p1 = len(bpath)>1 and bpath.split('/')[1] or '' 
     
    579575        self.total = human_format(sum([d['size'] for d in result.values()])) 
    580576 
    581         sresult = [(d['size'], d['brain']) for k,d in result.items() if d['brain']] 
    582         sresult.sort(key=lambda i:i[0], reverse=True) 
    583  
    584         sortedres = [] 
    585         burl = "%s/%s" % (self.purl(), self.basepath) 
    586         banalyse_url_tmpl = "%s/@@size_stats?basepath=%s/%%s&submit=Search" % ( 
    587             self.purl(), self.basepath) 
    588         for size, b in sresult: 
    589             isFolder = b.getObject().isPrincipiaFolderish 
    590             oid = b.getId or b.id 
    591             sortedres.append({'id': oid, 
    592                       'path': "%s/%s" % (self.basepath, oid), 
    593                       'href': "%s/%s" % (burl, oid), 
    594                       'human_size': human_format(size), 
    595                       'analyse_url': isFolder and banalyse_url_tmpl % oid or "",}) 
     577        sortedres = [(d['size'], d['brain']) for k,d in result.items() if d['brain']] 
     578        sortedres.sort(key=lambda i:i[0], reverse=True) 
    596579        return sortedres 
     580 
     581    def getInfoForTableItem(self, size, brain): 
     582        oid = brain.getId or brain.id 
     583        analyse_url = "" 
     584        if brain.getObject().isPrincipiaFolderish: 
     585            analyse_url =  "%s/@@size_stats?basepath=%s/%s&submit=Search" % ( 
     586                            self.purl(), self.basepath, oid) 
     587        return {'id': oid, 
     588                'path': "%s/%s" % (self.basepath, oid), 
     589                'href': "%s%s/%s" % (self.purl(), self.basepath, oid), 
     590                'human_size': human_format(size), 
     591                'analyse_url': analyse_url,} 
    597592 
    598593    def getSizeStats(self): 
     
    604599         
    605600        infos = [] 
    606         for i in self._walk(self.context, path): 
    607             if self.DEBUG or i['size'] > 1: 
    608                 infos.append(i) 
     601        for size, brain in self._walk(self.context, path): 
     602            if self.DEBUG or size > 1: 
     603                infos.append(self.getInfoForTableItem(size, brain)) 
    609604         
    610605        return infos 
Note: See TracChangeset for help on using the changeset viewer.