def surveyor_stats_json(request, survey_slug, interval): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return _error(**form.errors) res = Respondant.stats_report_filter(survey_slug, **form.cleaned_data) if not res.exists(): return _error('No records for these filters.') res = (res.extra(select={'timestamp': "date_trunc('%s', ts)" % interval}) .values('surveyor__first_name', 'surveyor__last_name', 'timestamp') .annotate(count=Count('pk'))) res = res.order_by('timestamp') grouped_data = defaultdict(list) for respondant in res: name = _get_fullname(respondant) grouped_data[name].append( (calendar.timegm(respondant['timestamp'].utctimetuple()) * 1000, respondant['count']) ) graph_data = [] for name, data in grouped_data.iteritems(): graph_data.append({'data': data, 'name': name}) return HttpResponse(json.dumps({ 'success': True, 'graph_data': graph_data }, cls=DateTimeJSONEncoder), content_type='application/json')
def surveyor_stats_raw_data_csv(request, survey_slug): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(json.dumps(form.errors)) res = (Respondant.stats_report_filter(survey_slug, **form.cleaned_data) .select_related('surveyor')) response = _create_csv_response('surveyor_stats.csv') writer = csv.writer(response) writer.writerow(('Surveyor', 'market', 'timestamp', 'status')) for row in res: writer.writerow((row.surveyor.get_full_name() if row.surveyor else '', row.survey_site, row.ts, row.review_status)) return response
def surveyor_stats_raw_data_csv(request, survey_slug): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(json.dumps(form.errors)) res = (Respondant.stats_report_filter( survey_slug, **form.cleaned_data).select_related('surveyor')) response = _create_csv_response('surveyor_stats.csv') writer = csv.writer(response) writer.writerow(('Surveyor', 'market', 'timestamp', 'status')) for row in res: writer.writerow((row.surveyor.get_full_name() if row.surveyor else '', row.survey_site, row.ts, row.review_status)) return response
def surveyor_stats_csv(request, survey_slug, interval): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(json.dumps(form.errors)) res = Respondant.stats_report_filter(survey_slug, **form.cleaned_data) res = (res.extra(select={'timestamp': "date_trunc('%s', ts)" % interval}) .values('surveyor__first_name', 'surveyor__last_name', 'timestamp') .annotate(count=Count('pk'))) response = _create_csv_response('raw_surveyor_stats.csv') writer = csv.writer(response) writer.writerow(('Surveyor', 'timestamp', 'count')) for row in res: writer.writerow((_get_fullname(row), row['timestamp'], row['count'])) return response
def surveyor_stats_csv(request, survey_slug, interval): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(json.dumps(form.errors)) res = Respondant.stats_report_filter(survey_slug, **form.cleaned_data) res = (res.extra(select={ 'timestamp': "date_trunc(%s, ts)" }, select_params=(interval, )).values( 'surveyor__first_name', 'surveyor__last_name', 'timestamp').annotate(count=Count('pk'))) response = _create_csv_response('raw_surveyor_stats.csv') writer = csv.writer(response) writer.writerow(('Surveyor', 'timestamp', 'count')) for row in res: writer.writerow((_get_fullname(row), row['timestamp'], row['count'])) return response
def surveyor_stats_json(request, survey_slug, interval): form = SurveyorStatsForm(request.GET) if not form.is_valid(): return _error(**form.errors) res = Respondant.stats_report_filter(survey_slug, **form.cleaned_data) if not res.exists(): return _error('No records for these filters.') res = (res.extra(select={ 'timestamp': "date_trunc(%s, ts)" }, select_params=(interval, )).values( 'surveyor__first_name', 'surveyor__last_name', 'timestamp').annotate(count=Count('pk'))) res = res.order_by('timestamp') grouped_data = defaultdict(list) for respondant in res: name = _get_fullname(respondant) grouped_data[name].append( (calendar.timegm(respondant['timestamp'].utctimetuple()) * 1000, respondant['count'])) graph_data = [] for name, data in grouped_data.iteritems(): graph_data.append({'data': data, 'name': name}) return HttpResponse(json.dumps({ 'success': True, 'graph_data': graph_data }, cls=CustomJSONEncoder), content_type='application/json')