From 0d7cb37759bcfe586ce4675177c01046a174d83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 25 Dec 2018 18:43:24 +0100 Subject: [PATCH] add routing stats because heck why not --- src/c3nav/mapdata/api.py | 12 ++++++++---- src/c3nav/routing/api.py | 13 +++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index 592b23a3..96bdf785 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -44,6 +44,13 @@ def optimize_query(qs): return qs +def api_stats_clean_location_value(value): + if isinstance(value, str) and value.startswith('c:'): + value = value.split(':') + value = 'c:%s:%d:%d' % (value[1], int(float(value[2]) / 3) * 3, int(float(value[3]) / 3) * 3) + return value + + def api_stats(view_name): def wrapper(func): @wraps(func) @@ -51,10 +58,7 @@ def api_stats(view_name): response = func(self, request, *args, **kwargs) if response.status_code < 400 and kwargs: name, value = next(iter(kwargs.items())) - if isinstance(value, str) and value.startswith('c:'): - value = value.split(':') - value = 'c:%s:%d:%d' % (value[1], int(float(value[2])/3)*3, int(float(value[3])/3)*3) - increment_cache_key('apistats__%s__%s__%s' % (view_name, name, value)) + increment_cache_key('apistats__%s__%s__%s' % (view_name, name, api_stats_clean_location_value(value))) return response return wrapped_func return wrapper diff --git a/src/c3nav/routing/api.py b/src/c3nav/routing/api.py index 63f2b11a..9f7a1579 100644 --- a/src/c3nav/routing/api.py +++ b/src/c3nav/routing/api.py @@ -4,7 +4,9 @@ from rest_framework.decorators import action from rest_framework.response import Response from rest_framework.viewsets import ViewSet +from c3nav.mapdata.api import api_stats_clean_location_value from c3nav.mapdata.models.access import AccessPermission +from c3nav.mapdata.utils.cache.stats import increment_cache_key from c3nav.mapdata.utils.locations import visible_locations_for_request from c3nav.routing.exceptions import LocationUnreachable, NoRouteFound, NotYetRoutable from c3nav.routing.forms import RouteForm @@ -55,6 +57,17 @@ class RoutingViewSet(ViewSet): 'error': _('No route found.'), }) + increment_cache_key('apistats__route_tuple_%s_%s' % ( + api_stats_clean_location_value(form.cleaned_data['origin'].pk), + api_stats_clean_location_value(form.cleaned_data['destination'].pk), + )) + increment_cache_key('apistats__route_origin_%s' % ( + api_stats_clean_location_value(form.cleaned_data['origin'].pk), + )) + increment_cache_key('apistats__route_destination_%s' % ( + api_stats_clean_location_value(form.cleaned_data['destination'].pk), + )) + return Response({ 'request': { 'origin': form.cleaned_data['origin'].pk,