/ components / paddock / api / views.py
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)