示例#1
0
def stats_data(request, org):
    params, _ = parse_args_for_es(request)
    domains = [{
        "name": d.name,
        "hr_name": d.hr_name
    } for d in Domain.get_by_organization(org).all()]
    histo_type = request.GET.get('histogram_type')
    period = request.GET.get("daterange", 'month')

    today = date.today()
    startdate = (today - timedelta(days={
        'month': 30,
        'week': 7,
        'quarter': 90,
        'year': 365,
    }[period]))

    histo_data = dict([(d['hr_name'],
                        es_histogram(histo_type, [d["name"]],
                                     startdate.strftime('%Y-%m-%d'),
                                     today.strftime('%Y-%m-%d')))
                       for d in domains])

    return json_response({
        'histo_data':
        histo_data,
        'range':
        period,
        'startdate': [startdate.year, startdate.month, startdate.day],
        'enddate': [today.year, today.month, today.day],
    })
示例#2
0
def stats_data(request, org):
    params, _ = parse_args_for_es(request)
    domains = [{"name": d.name, "hr_name": d.hr_name} for d in Domain.get_by_organization(org).all()]
    histo_type = request.GET.get("histogram_type")
    period = request.GET.get("daterange", "month")

    today = date.today()
    startdate = today - timedelta(days={"month": 30, "week": 7, "quarter": 90, "year": 365}[period])

    histo_data = dict(
        [
            (
                d["hr_name"],
                es_histogram(histo_type, [d["name"]], startdate.strftime("%Y-%m-%d"), today.strftime("%Y-%m-%d")),
            )
            for d in domains
        ]
    )

    return json_response(
        {
            "histo_data": histo_data,
            "range": period,
            "startdate": [startdate.year, startdate.month, startdate.day],
            "enddate": [today.year, today.month, today.day],
        }
    )
示例#3
0
 def run_query(self):
     from corehq.apps.appstore.views import parse_args_for_es
     self.es_params, _ = parse_args_for_es(self.request, prefix=self.es_prefix)
     results = self.es_query(self.es_params)
     self.es_facet_map = fill_mapping_with_facets(self.es_facet_mapping, results, self.es_params)
     self.es_response = results
     self.es_queried = True
     return self.es_response
示例#4
0
def stats_data(request, org):
    params, _ = parse_args_for_es(request)
    domains = [{"name": d.name, "hr_name": d.hr_name} for d in Domain.get_by_organization(org).all()]
    histo_type = request.GET.get('histogram_type')

    enddate = request.GET.get('enddate')
    enddate = datetime.strptime(enddate, "%Y-%m-%d") if enddate else date.today()
    startdate = request.GET.get('startdate')
    startdate = datetime.strptime(startdate, "%Y-%m-%d") if startdate else enddate - timedelta(days=30)

    histo_data = dict([(d['hr_name'],
                        es_histogram(histo_type, [d["name"]], request.datespan.startdate_display, request.datespan.enddate_display))
                        for d in domains])

    def _total_forms_until_date(dom, date):
        key = ["submission", dom]
        r = get_db().view('reports_forms/all_forms',
            startkey=key+[""],
            endkey=key+[json_format_datetime(date)],
            group=False
        ).one()
        return r['value'] if r else 0

    def _total_cases_until_date(dom, date):
        key = ["", dom]
        r = get_db().view('reports/case_activity',
            startkey=key + [""],
            endkey=key + [json_format_datetime(date), '{}']).one()
        return r['value'] if r else 0

    def _total_users_until_date(dom, date):
        from corehq.apps.appstore.views import es_query
        q = {
            "query": {"term": {"domain": dom}},
            "filter": {
                "and": [
                    {"range": {"created_on": {"lt": date.strftime('%Y-%m-%d')}}},
                    {"term": {"doc_type": "CommCareUser"}},
                ],
            },
        }
        return es_query(q=q, es_url=USER_INDEX + '/user/_search')["hits"]["total"]


    init_val_fn = {
        "forms": _total_forms_until_date,
        "cases": _total_cases_until_date,
        "users": _total_users_until_date,
    }[histo_type]

    return json_response({
        'histo_data': histo_data,
        'initial_values': dict([(dom["name"], init_val_fn(dom["name"], startdate)) for dom in domains]),
        'startdate': request.datespan.startdate_key_utc,
        'enddate': request.datespan.enddate_key_utc,
    })
示例#5
0
 def es_query(self):
     from corehq.apps.appstore.views import parse_args_for_es, generate_sortables_from_facets
     if not self.es_queried:
         self.es_params, _ = parse_args_for_es(self.request, prefix=ES_PREFIX)
         self.es_facets = DOMAIN_FACETS
         results = es_domain_query(self.es_params, self.es_facets, sort=self.get_sorting_block(),
             start_at=self.pagination.start, size=self.pagination.count)
         self.es_sortables = generate_sortables_from_facets(results, self.es_params, prefix=ES_PREFIX)
         self.es_queried = True
         self.es_response = results
     return self.es_response
示例#6
0
def stats_data(request, org):
    params, _ = parse_args_for_es(request)
    domains = [{"name": d.name, "hr_name": d.hr_name} for d in Domain.get_by_organization(org).all()]
    histo_type = request.GET.get('histogram_type')
    period = request.GET.get("daterange", 'month')

    enddate = request.GET.get('enddate')
    enddate = datetime.strptime(enddate, "%Y-%m-%d") if enddate else date.today()
    startdate = request.GET.get('startdate')
    startdate = datetime.strptime(startdate, "%Y-%m-%d") if startdate else enddate - timedelta(days=30)

    histo_data = dict([(d['hr_name'],
                        es_histogram(histo_type, [d["name"]], startdate.strftime('%Y-%m-%d'), enddate.strftime('%Y-%m-%d')))
                       for d in domains])

    return json_response({
        'histo_data': histo_data,
        'range': period,
        'startdate': [startdate.year, startdate.month, startdate.day],
        'enddate': [enddate.year, enddate.month, enddate.day],
    })
示例#7
0
def stats_data(request, org):
    params, _ = parse_args_for_es(request)
    domains = [{"name": d.name, "hr_name": d.hr_name} for d in Domain.get_by_organization(org).all()]
    histo_type = request.GET.get('histogram_type')
    period = request.GET.get("daterange", 'month')

    today = date.today()
    startdate = (today - timedelta(days={
        'month': 30,
        'week': 7,
        'quarter': 90,
        'year': 365,
    }[period]))

    histo_data = dict([(d['hr_name'], es_histogram(histo_type, [d["name"]], startdate.strftime('%Y-%m-%d'), today.strftime('%Y-%m-%d')))
                       for d in domains])

    return json_response({
        'histo_data': histo_data,
        'range': period,
        'startdate': [startdate.year, startdate.month, startdate.day],
        'enddate': [today.year, today.month, today.day],
    })