so will you integrate it into the current issue tracker?
like a tab or button with "sort by number of occurrence"

On Oct 25, 1:59 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> Good idea!
>
> On Oct 25, 6:37 am, selecta <gr...@delarue-berlin.de> wrote:
>
>
>
> > Quite a while ago I wrote some code for my issue tracker to show error
> > tickets by their number of occurrence.
> > The Idea behind this is that you will see the error that appears most
> > frequently and that needs fixing immediately. Since I am too busy to
> > finish the issue tracker I will just share the relevant code
>
> > screenshothttp://jaguar.biologie.hu-berlin.de/~fkrause/screenshot_error_frequec...
>
> > the controller
>
> > error_files_base =
> > os.path.join(request.env.web2py_path,'applications',request.application,'er­rors')
> > def errors():
> >    import operator
> >    import os.path
> >    import hashlib
> >    import os
> >    import pickle
> >     #------------------------------------------
> >     if request.vars.has_key('del'):
> >         for fn in os.listdir(error_files_base):
> >             try:
> >                 error =
> > pickle.load(open(os.path.join(error_files_base,fn),'r'))
> >             except IOError:
> >                 continue
> >             hash = hashlib.md5(error['traceback']).hexdigest()
> >             if request.vars['del'] == hash:
> >                 os.remove( os.path.join(error_files_base,fn) )
> >     #------------------------------------------
>
> >     hash2error = dict()
> >     for fn in os.listdir(error_files_base):
> >         try:
> >             error =
> > pickle.load(open(os.path.join(error_files_base,fn),'r'))
> >         except IOError:
> >             continue
> >         hash = hashlib.md5(error['traceback']).hexdigest()
> >         try:
> >             hash2error[hash]['count'] += 1
> >         except KeyError:
> >             error_lines = error['traceback'].split("\n")
> >             last_line = error_lines[-2]
> >             error_causer = os.path.split(error['layer'])[1]
> >             hash2error[hash] = dict(count = 1, pickel = error, causer
> > = error_causer, last_line = last_line, hash = hash)
>
> >     decorated = [(x['count'],x) for x in hash2error.values()]
> >     decorated.sort(key=operator.itemgetter(0), reverse=True)
> >     return dict(errors = [x[1] for x in decorated])
>
> > the view
>
> > <table id='trck_errors'>
> > {{=THEAD(TR(TH('Delete'), TH('Count'), TH('File'), TH('Error')))}}
> > <tbody>
> > {{for e in errors:}}
> > {{=TR(TD(BUTTON_DELETE(e['hash'])),
> > TH(e['count']),TD(e['causer']),TD(e['last_line']),
> > _onclick="collapse('%s');"%e['hash'])}}{{=TR(TD(DIV(CODE(e['pickel']
> > ['traceback']), _id=e['hash']),_colspan=4 ))}}
> > {{pass}}
> > </tbody>
> > </table>
> > <script> $(document).ready(function(){
> >     $('{{for e in errors:}}#{{=e['hash']}}, {{pass}}').hide();
> >     }); </script>
>
> > feel free to use and improve

Reply via email to