def report_summary(request, report_id): try: report = CommcareReport.objects.get(pk=report_id) except CommcareReport.DoesNotExist: return HttpResponse(_(u"Unable to download report!")) #GET SELECT VALUES key try: select_values = ReportMetaData.objects.get(report__pk=report_id, key='select_values') query = bamboo_query(report, as_summary=True, select={'select':'all'}) select = True data = dict(literal_eval(select_values.value)) except ReportMetaData.DoesNotExist: query = bamboo_query(report, as_summary=True, select={'select':'all'}) data = query select = False context = {'report': report, 'data_dict': data, 'select': select, 'data_summary': dump_json(query)} return render(request, "summary.html", context)
def bamboo_query(report, select=None, query=None, group=None, as_summary=False, first=False, last=False, print_url=False): params = { 'select': select, 'query': query, 'group': group } # remove key with no value for key, value in params.items(): if not value: params.pop(key) else: if isinstance(value, dict): params[key] = dump_json(value) if as_summary: url = get_bamboo_dataset_summary_url(report) else: url = get_bamboo_dataset_url(report) req = requests.get(url, params=params) print req.url # debugging if print_url: print(req.url) if not req.status_code in (200, 202): raise ErrorRetrievingBambooData(u"%d Status Code received." % req.status_code) try: response = load_json(req.text) if last: return response[-1] elif first: return response[0] else: return response except Exception as e: print(req.text) raise ErrorParsingBambooData(e.message)