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], })
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], } )
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
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, })
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
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], })
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], })