def details(request): client = CbClient() # Phases test_id = request.GET['id'] test_details = client.find(test_id) events = test_details.get('events', {}) phases = list() for event in sorted(events): phases.append("{0} phase {1} at {2}".format(events[event]['phase'], events[event]['status'], event)) histograms = test_details.get('histograms', {}) histograms = dict((d, LatencyDict(a)) for d, a in histograms.iteritems()) reports = test_details.get('reports', {}) context = RequestContext(request, {'phases': phases, 'histograms': histograms, 'reports': reports, 'build': test_details.get('build'), 'spec': test_details.get('spec'), 'ini': test_details.get('ini'), 'test_id': test_id, 'title': 'Test Details'}) return render_to_response('details.html', context)
def histo(request): client = CbClient() test_id = request.POST.get('id', uuid4().hex) description = request.POST.get('description', uuid4().hex) attachment = request.POST.get('attachment', '') attachment = json.loads(str(attachment)) histograms = client.find(test_id).get('histograms', {}) histograms.update({description: attachment}) doc = {'histograms': histograms} client.update(test_id, doc) return HttpResponse(test_id)
def report(request): client = CbClient() test_id = request.POST.get('test_id', uuid4().hex) description = request.POST.get('description', uuid4().hex) url = request.POST.get('url', '') reports = client.find(test_id).get('reports', {}) reports.update({description: url}) doc = {'reports': reports} client.update(test_id, doc) if request.POST.get('submit'): location = '/details?id={0}'.format(test_id) return redirect(location) else: return HttpResponse(test_id)
def update(request): client = CbClient() test_id = request.POST.get('id', uuid4().hex) build = request.POST.get('build', '') spec = request.POST.get('spec', '') ini = request.POST.get('ini', '') timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) phase = request.POST.get('phase', '') status = request.POST.get('status', '') events = client.find(test_id).get('events', {}) events.update({timestamp: {'phase': phase, 'status': status}}) doc = {'build': build, 'spec': spec, 'ini': ini, 'events': events, 'type': 'update'} client.update(test_id, doc) return HttpResponse(test_id)