def test_group_by_class(): snapshot() a = AAA() b = BBB() c = BBB() result = group_by_class() assert result['tests.test_drainhunter.BBB'] == [b, c] assert result['tests.test_drainhunter.AAA'] == [a]
def index(snapshot_url): objects = group_by_class() if not objects: return 404, 'There are no any new objects, wait and refresh the page' else: out = 'Take new <a href="%s">snapshot</a><br /><br />' % snapshot_url for k, v in reversed(sorted(objects.items(), key=lambda r: (len(r[1]), r[0]))): out += '<a href="list/%s.dot">%s</a>: %d<br />' % (k, k, len(v)) return 200, out
def object_list(request, cls, format): for k, objects in group_by_class().iteritems(): if k == cls: break else: return HttpResponse('There are no any objects of class %s, try to refresh page later' ' or go to <a href="%s">index</a>.' % ( cls, reverse('drainhunter-index'))) objgraph.show_backrefs(objects, filename="/tmp/objgraph.dot") if format == 'dot': response = HttpResponse(open('/tmp/objgraph.dot'), mimetype='text/vnd.graphviz') response['Content-Disposition'] = 'attachment; filename=objgraph.dot' return response elif format == 'png': return HttpResponse(open('/tmp/objgraph.png'), mimetype='image/png') convert_to_svg("/tmp/objgraph.dot", "/tmp/objgraph.svg") return HttpResponse(open('/tmp/objgraph.svg'), mimetype='image/svg+xml')