views.py
1 import json 2 3 from django.http import JsonResponse 4 from django.views import View 5 6 from .telemetry_loader import TelemetryLoader 7 8 9 class SessionView(View): 10 caching = True 11 telemetry_loader = TelemetryLoader(caching=caching) 12 13 def get(self, request, session_id=0, *args, **kwargs): 14 df = self.telemetry_loader.get_session_df(session_id) 15 16 # Compression: 17 # Compress the JSON response. Django can be configured to gzip responses, which can significantly reduce the response size. 18 # Make sure your frontend can handle the decompression, which is typically handled automatically by modern browsers. 19 20 # render the dataframe as json 21 df_json = df.to_json(orient="split", date_format="iso") 22 23 df_dict = json.loads(df_json) 24 25 return JsonResponse(df_dict, safe=False) 26 27 28 class LapView(View): 29 caching = True 30 telemetry_loader = TelemetryLoader(caching=caching) 31 32 def get(self, request, lap_id=0, *args, **kwargs): 33 df = self.telemetry_loader.get_lap_df(lap_id) 34 35 df_json = df.to_json(orient="split", date_format="iso") 36 37 df_dict = json.loads(df_json) 38 39 return JsonResponse(df_dict, safe=False)