2424from dashboard .core .cpus .models import CPUArchitecture
2525from dashboard .core .gpus .models import GPUType
2626
27- from dashboard .core .bots .reports .serializers import TestPathListSerializer , \
27+ from dashboard .core .bots .reports .serializers import TestPathsListSerializer , \
2828 TestsForBrowserBotListSerializer , ResultsForSubtestListSerializer , \
2929 BotReportDataSerializer
3030
3939db_character_separator = '\\ '
4040
4141
42- class ReportDataBaseListViewSerializer (ListAPIView ):
42+ class BaseReportDataListViewSerializer (ListAPIView ):
4343 serializer_class = BotReportDataSerializer
4444
4545 def build_filters (self , is_improvement = True ) -> dict :
@@ -83,7 +83,7 @@ def build_filters(self, is_improvement=True) -> dict:
8383 }
8484
8585
86- class BotDataReportImprovementListView (ReportDataBaseListViewSerializer ):
86+ class BotDataReportImprovementListView (BaseReportDataListViewSerializer ):
8787 model = BotReportData
8888 queryset = BotReportData .objects .filter (aggregation = 'None' )
8989
@@ -95,7 +95,7 @@ def get_queryset(self):
9595 prev_result__isnull = True ).order_by ('-delta' )[:limit ]
9696
9797
98- class BotDataReportRegressionListView (ReportDataBaseListViewSerializer ):
98+ class BotDataReportRegressionListView (BaseReportDataListViewSerializer ):
9999 model = BotReportData
100100 queryset = BotReportData .objects .filter (aggregation = 'None' )
101101
@@ -107,60 +107,62 @@ def get_queryset(self):
107107 prev_result__isnull = True ).order_by ('-delta' )[:limit ]
108108
109109
110- class TestPathList (ListAPIView ):
111- serializer_class = TestPathListSerializer
110+ class TestPathsList (ListAPIView ):
111+ serializer_class = TestPathsListSerializer
112112
113113 def get_queryset (self ):
114- if self .kwargs .get ('browser' ) == 'all' :
115- browser_obj = Browser .objects .all ()
116- else :
117- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
114+ browser_filter = self .request .query_params .get ('browser' , None )
115+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
116+ browsers = Browser .objects .filter (** browser_filter_by )
117+
118+ root_test_filter = self .request .query_params .get ('root_test' , None )
119+ root_test_filter_by = {'pk' : root_test_filter } if root_test_filter \
120+ else {}
121+ root_test = Test .objects .filter (** root_test_filter_by )
118122
119123 return BotReportData .objects .filter (
120- browser__in = browser_obj ,
121- root_test = Test .objects .filter (pk = self .kwargs .get ('test' ))
124+ browser__in = browsers , root_test__in = root_test
122125 ).distinct ('test_path' )
123126
124127
125128class TestsForBrowserBotList (ListAPIView ):
126129 serializer_class = TestsForBrowserBotListSerializer
127130
128131 def get_queryset (self ):
129- if self .kwargs .get ('browser' ) == 'all' :
130- browser_obj = Browser .objects .all ()
131- else :
132- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
133- try :
134- bot = Bot .objects .get (pk = self .kwargs .get ('bot' ))
135- return BotReportData .objects .filter (
136- browser__in = browser_obj , bot = bot
137- ).distinct ('root_test' )
138- except Bot .DoesNotExist :
139- return BotReportData .objects .filter (
140- browser__in = browser_obj
141- ).distinct ('root_test' )
132+ browser_filter = self .request .query_params .get ('browser' , None )
133+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
134+ browsers = Browser .objects .filter (** browser_filter_by )
142135
136+ bot_filter = self .request .query_params .get ('bot' , None )
137+ bot_filter_by = {'pk' : bot_filter } if bot_filter else {}
138+ bots = Bot .objects .filter (** bot_filter_by )
139+
140+ return BotReportData .objects .filter (
141+ browser__in = browsers , bot__in = bots
142+ ).distinct ('root_test' )
143143
144- class ResultsForSubtestList (ListAPIView ):
144+
145+ class ResultsForSubTestList (ListAPIView ):
145146 serializer_class = ResultsForSubtestListSerializer
146147
147148 def get_queryset (self ):
148- if self .kwargs .get ('browser' ) == 'all' :
149- browser_obj = Browser .objects .all ()
150- else :
151- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
152- test = Test .objects .get (pk = self .kwargs .get ('test' ))
153- test_path = urllib .parse .unquote (self .kwargs .get ('subtest' ))
154- if self .kwargs .get ('bot' ) == 'all' :
155- return BotReportData .objects .filter (
156- browser__in = browser_obj , root_test = test , test_path = test_path
157- ).order_by ('timestamp' )
158- else :
159- bot = Bot .objects .get (pk = self .kwargs .get ('bot' ))
160- return BotReportData .objects .filter (
161- browser__in = browser_obj , root_test = test , test_path = test_path ,
162- bot = bot
163- ).order_by ('timestamp' )
149+ browser_filter = self .request .query_params .get ('browser' , None )
150+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
151+ browsers = Browser .objects .filter (** browser_filter_by )
152+
153+ test = Test .objects .get (pk = self .request .query_params .get ('test' ))
154+ test_path = urllib .parse .unquote (
155+ self .request .query_params .get ('subtest' )
156+ )
157+
158+ bot_filter = self .request .query_params .get ('bot' , None )
159+ bot_filter_by = {'pk' : bot_filter } if bot_filter else {}
160+ bots = Bot .objects .filter (** bot_filter_by )
161+
162+ return BotReportData .objects .filter (
163+ browser__in = browsers , root_test = test , test_path = test_path ,
164+ bot__in = bots
165+ ).order_by ('timestamp' )
164166
165167
166168class BotReportView (APIView ):
@@ -248,12 +250,13 @@ def post(self, request, format=None):
248250 bot_id = self .request .POST .get ('bot_id' )
249251 json_data = self .request .POST .get ('test_data' )
250252 except AttributeError :
251- log .error ("Got invalid params from the bot: %s" % request .auth )
253+ log .error (
254+ 'Got invalid params from the bot: {0}' .format (request .auth ))
252255 return HttpResponseBadRequest (
253- " Some params are missing in the request"
256+ ' Some params are missing in the request'
254257 )
255258
256- log .info (" Started processing data from bot %s" % (bot_id ))
259+ log .info (' Started processing data from bot {0}' . format (bot_id ))
257260 # The timestamp may/may not be there - hence not checking
258261 timestamp = None
259262 if self .request .POST .get ('timestamp' ):
@@ -264,33 +267,35 @@ def post(self, request, format=None):
264267 test_data = json .loads (json_data )
265268 except AttributeError :
266269 return HttpResponseBadRequest (
267- " Error parsing JSON file from bot: %s " % request .auth
270+ ' Error parsing JSON file from bot: {0}' . format ( request .auth )
268271 )
269272
270273 bot = Bot .objects .get (pk = bot_id )
271274
272275 if not bot .enabled :
273- log .error ("Got data from disabled bot: %s" % bot_id )
274- return HttpResponseBadRequest ("The bot %s is not enabled" % bot_id )
276+ log .error ('Got data from disabled bot: {0}' .format (bot_id ))
277+ return HttpResponseBadRequest (
278+ 'The bot {0} is not enabled' .format (bot_id ))
275279
276280 try :
277281 browser = Browser .objects .get (pk = browser_id )
278282 except Browser .DoesNotExist :
279283 log .error (
280- "Got invalid browser %s from bot: %s" % (browser_id , bot_id )
284+ 'Got invalid browser {0} from bot: {1}' .format (
285+ browser_id , bot_id )
281286 )
282- return HttpResponseBadRequest (" The browser does not exist" )
287+ return HttpResponseBadRequest (' The browser does not exist' )
283288
284289 try :
285290 root_test = Test .objects .get (pk = test_id )
286291 except Test .DoesNotExist :
287292 log .error (
288- " Got invalid root test: %s from bot: %s for browser: %s, "
289- " browser_version: %s" % (
290- test_id , bot_id , browser_id , browser_version
291- ) )
293+ ' Got invalid root test: {0} from bot: {1} for browser: {2}, '
294+ ' browser_version: {3}' . format (
295+ test_id , bot_id , browser_id , browser_version )
296+ )
292297 return HttpResponseBadRequest (
293- " The test %s does not exist" % test_id
298+ ' The test {0} does not exist' . format ( test_id )
294299 )
295300
296301 test_data_results = BenchmarkResults (test_data )
@@ -318,27 +323,28 @@ def post(self, request, format=None):
318323 " " + current_metric .unit
319324 except MetricUnit .DoesNotExist :
320325 log .error (
321- " Got wrong Metric %s for bot: %s , browser: %s, "
322- " browser_version: %s , root_test: %s , test_description: "
323- "%s" % ( metric_name , bot_id , browser_id , browser_version ,
324- test_id , raw_path
325- )
326+ ' Got wrong Metric {0} for bot: {1} , browser: {2}, '
327+ ' browser_version: {3} , root_test: {4} , test_description: '
328+ '{5}' . format (
329+ metric_name , bot_id , browser_id , browser_version ,
330+ test_id , raw_path )
326331 )
327332 return HttpResponseBadRequest (
328- " The Metric Unit %s does not exist" % metric_name
333+ ' The Metric Unit {0} does not exist' . format ( metric_name )
329334 )
330335
331336 if current_metric .unit != unit :
332- log .error ("Got wrong unit %s for metric unit %s data for "
333- "bot: %s, browser: %s, browser_version: %s, "
334- "root_test: %s, test_description: %s" %
335- (unit , metric_name , bot_id , browser_id ,
336- browser_version , test_id , raw_path )
337- )
338- return HttpResponseBadRequest ("The received unit: %s field of "
339- "Metric Unit %s does not match"
340- % (unit , metric_name )
341- )
337+ log .error (
338+ 'Got wrong unit {0} for metric unit {1} data for bot: '
339+ '{2}, browser: {3}, browser_version: {4}, root_test: {5}, '
340+ 'test_description: {6}' .format (
341+ unit , metric_name , bot_id , browser_id ,
342+ browser_version , test_id , raw_path
343+ )
344+ )
345+ return HttpResponseBadRequest (
346+ 'The received unit: {0} field of Metric Unit {1} does not '
347+ 'match' .format (unit , metric_name ))
342348
343349 if self .is_aggregated (metric = result ['metric' ]):
344350 aggregation = self .extract_aggregation (metric = result ['metric' ])
@@ -365,13 +371,13 @@ def post(self, request, format=None):
365371 )
366372 except Exception as e :
367373 log .error (
368- " Failed inserting data for bot: %s , browser: %s, "
369- " browser_version: %s , root_test: %s , test_description: %s"
370- " and Exception %s" %
371- ( bot_id , browser_id , browser_version , test_id , raw_path ,
372- str ( e ) )
374+ ' Failed inserting data for bot: {0} , browser: {1}, '
375+ ' browser_version: {2} , root_test: {3} , test_description: '
376+ '{4} and Exception {5}' . format (
377+ bot_id , browser_id , browser_version , test_id ,
378+ raw_path , e )
373379 )
374- return HttpResponseBadRequest ("Exception inserting the data "
375- "into the DB: %s" % str (e ))
380+ return HttpResponseBadRequest (
381+ 'Exception while inserting the data: {0}' . format (e ))
376382
377- return HttpResponse (" The POST went through" )
383+ return HttpResponse (' The POST went through' )
0 commit comments