def test_influx_db_query_when_get_events_list_then_query_api_called( monkeypatch): query = ( f'from(bucket:"{read_bucket}") ' f"|> range(start: -30d, stop: now()) " f'|> filter(fn:(r) => r._measurement == "api_call") ' f'|> filter(fn: (r) => r["organisation_id"] == "{org_id}") ' f'|> drop(columns: ["organisation", "organisation_id", "type", "project", "project_id"])' f"|> aggregateWindow(every: 24h, fn: sum)") mock_influxdb_client = mock.MagicMock() monkeypatch.setattr(app_analytics.influxdb_wrapper, "influxdb_client", mock_influxdb_client) mock_query_api = mock.MagicMock() mock_influxdb_client.query_api.return_value = mock_query_api # When get_event_list_for_organisation(org_id) # Then mock_query_api.query.assert_called_once_with(org=influx_org, query=query)
def organisation_info(request, organisation_id): organisation = get_object_or_404(Organisation, pk=organisation_id) template = loader.get_template("sales_dashboard/organisation.html") max_seats_form = MaxSeatsForm({ "max_seats": (0 if (organisation.has_subscription() is False) else organisation.subscription.max_seats) }) event_list, labels = get_event_list_for_organisation(organisation_id) context = { "organisation": organisation, "max_seats_form": max_seats_form, "event_list": event_list, "traits": mark_safe(json.dumps(event_list["traits"])), "identities": mark_safe(json.dumps(event_list["identities"])), "flags": mark_safe(json.dumps(event_list["flags"])), "labels": mark_safe(json.dumps(labels)), "api_calls": { # TODO: this could probably be reduced to a single influx request # rather than 3 range_: get_events_for_organisation(organisation_id, date_range=range_) for range_ in ("24h", "7d", "30d") }, } # If self hosted and running without an Influx DB data store, we dont want to/cant show usage if settings.INFLUXDB_TOKEN: event_list, labels = get_event_list_for_organisation(organisation_id) context["event_list"] = event_list context["traits"] = mark_safe(json.dumps(event_list["traits"])) context["identities"] = mark_safe(json.dumps(event_list["identities"])) context["flags"] = mark_safe(json.dumps(event_list["flags"])) context["labels"] = mark_safe(json.dumps(labels)) return HttpResponse(template.render(context, request))
def organisation_info(request, organisation_id): organisation = get_object_or_404(Organisation, pk=organisation_id) event_list, labels = get_event_list_for_organisation(organisation_id) template = loader.get_template("sales_dashboard/organisation.html") context = { "organisation": organisation, "event_list": event_list, "traits": mark_safe(json.dumps(event_list["traits"])), "identities": mark_safe(json.dumps(event_list["identities"])), "flags": mark_safe(json.dumps(event_list["flags"])), "labels": mark_safe(json.dumps(labels)), } return HttpResponse(template.render(context, request))
def organisation_info(request, organisation_id): organisation = get_object_or_404(Organisation, pk=organisation_id) event_list, labels = get_event_list_for_organisation(organisation_id) template = loader.get_template("sales_dashboard/organisation.html") context = { "organisation": organisation, "event_list": event_list, "traits": mark_safe(json.dumps(event_list["traits"])), "identities": mark_safe(json.dumps(event_list["identities"])), "flags": mark_safe(json.dumps(event_list["flags"])), "labels": mark_safe(json.dumps(labels)), "api_calls": { # TODO: this could probably be reduced to a single influx request # rather than 3 range_: get_events_for_organisation(organisation_id, date_range=range_) for range_ in ("24h", "7d", "30d") }, } return HttpResponse(template.render(context, request))