예제 #1
0
파일: views.py 프로젝트: wraithan/solomon
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')
예제 #2
0
파일: views.py 프로젝트: wraithan/solomon
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
예제 #3
0
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
예제 #4
0
파일: views.py 프로젝트: wraithan/solomon
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
예제 #5
0
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
예제 #6
0
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')