66import django
77
88from django .core .urlresolvers import reverse
9- from django .core .exceptions import ValidationError
9+ from django .core .exceptions import ValidationError , ObjectDoesNotExist
1010from django .http import HttpResponse , Http404 , HttpResponseBadRequest ,\
1111 HttpResponseNotFound
1212from django .shortcuts import get_object_or_404 , render_to_response
1818from .models import (Environment , Report , Project , Revision , Result ,
1919 Executable , Benchmark , Branch )
2020from .views_data import (get_default_environment , getbaselineexecutables ,
21- getdefaultexecutable , getcomparisonexes )
21+ getdefaultexecutable , getcomparisonexes ,
22+ get_benchmark_results )
2223from .results import save_result , create_report_if_enough_data
2324from . import commits
2425from .validators import validate_results_request
@@ -748,124 +749,6 @@ def django_has_content_type():
748749 (django .VERSION [0 ] == 1 and django .VERSION [1 ] >= 6 ))
749750
750751
751- def get_benchmark_results (data ):
752- try :
753- environment = Environment .objects .get (name = data ['env' ])
754- project = Project .objects .get (name = data ['proj' ])
755- executable = Executable .objects .get (name = data ['exe' ], project = project )
756- branch = Branch .objects .get (name = data ['branch' ], project = project )
757- benchmark = Benchmark .objects .get (name = data ['ben' ])
758- except Environment .DoesNotExist :
759- return None , HttpResponseNotFound (
760- 'Environment "' + data ['env' ] + '" does not exist!' )
761- except Project .DoesNotExist :
762- return None , HttpResponseNotFound (
763- 'Project "' + data ['proj' ] + '" does not exist!' )
764- except Executable .DoesNotExist :
765- return None , HttpResponseNotFound (
766- 'Executable "' + data ['exe' ] + '" does not exist!' )
767- except Branch .DoesNotExist :
768- return None , HttpResponseNotFound (
769- 'Branch "' + data ['branch' ] + '" does not exist!' )
770- except Benchmark .DoesNotExist :
771- return None , HttpResponseNotFound (
772- 'Benchmark "' + data ['ben' ] + '" does not exist!' )
773-
774- number_of_revs = int (data .get ('revs' , 10 ))
775-
776- baseline_commit_name = (data ['base_commit' ] if 'base_commit' in data
777- else None )
778- relative_results = (
779- ('relative' in data and data ['relative' ] in ['1' , 'yes' ]) or
780- baseline_commit_name is not None )
781-
782- result_query = Result .objects .filter (
783- benchmark = benchmark
784- ).filter (
785- environment = environment
786- ).filter (
787- executable = executable
788- ).filter (
789- revision__project = project
790- ).filter (
791- revision__branch = branch
792- ).select_related (
793- "revision"
794- ).order_by ('-date' )[:number_of_revs ]
795-
796- if len (result_query ) == 0 :
797- return None , HttpResponseNotFound ("No results were found!" )
798-
799- result_list = [item for item in result_query ]
800- result_list .reverse ()
801-
802- if relative_results :
803- ref_value = result_list [0 ].value
804-
805- if baseline_commit_name is not None :
806- baseline_env = environment
807- baseline_proj = project
808- baseline_exe = executable
809- baseline_branch = branch
810-
811- try :
812- if 'base_env' in data :
813- baseline_env = Environment .objects .get (name = data ['base_env' ])
814- if 'base_proj' in data :
815- baseline_proj = Project .objects .get (name = data ['base_proj' ])
816- if 'base_exe' in data :
817- baseline_exe = Executable .objects .get (name = data ['base_exe' ],
818- project = baseline_proj )
819- if 'base_branch' in data :
820- baseline_branch = Branch .objects .get (name = data ['base_branch' ],
821- project = baseline_proj )
822- except Environment .DoesNotExist :
823- return None , HttpResponseNotFound (
824- 'Baseline environment "' + data ['base_env' ] +
825- '" does not exist!' )
826- except Project .DoesNotExist :
827- return None , HttpResponseNotFound (
828- 'Baseline project "' + data ['base_proj' ] +
829- '" does not exist!' )
830- except Executable .DoesNotExist :
831- return None , HttpResponseNotFound (
832- 'Baseline executable "' + data ['base_exe' ] +
833- '"does not exist!' )
834- except Branch .DoesNotExist :
835- return None , HttpResponseNotFound (
836- 'Baseline branch "' + data ['base_branch' ] +
837- '" does not exist!' )
838-
839- base_data = Result .objects .get (
840- benchmark = benchmark ,
841- environment = baseline_env ,
842- executable = baseline_exe ,
843- revision__project = baseline_proj ,
844- revision__branch = baseline_branch ,
845- revision__commitid = baseline_commit_name )
846-
847- if base_data :
848- ref_value = base_data .value
849- else :
850- return None , HttpResponseNotFound (
851- 'Result for revision "' + baseline_commit +
852- '" does not exist !' )
853-
854- if relative_results :
855- for element in result_list :
856- element .value = (100 * (element .value - ref_value )) / ref_value
857-
858- return {
859- 'environment' : environment ,
860- 'project' : project ,
861- 'executable' : executable ,
862- 'branch' : branch ,
863- 'benchmark' : benchmark ,
864- 'results' : result_list ,
865- 'relative' : relative_results ,
866- }, None
867-
868-
869752@require_GET
870753def makeimage (request ):
871754 data = request .GET
@@ -875,10 +758,10 @@ def makeimage(request):
875758 except ValidationError as err :
876759 return HttpResponseBadRequest (str (err ))
877760
878- result_data , error = get_benchmark_results ( data )
879-
880- if error is not None :
881- return error
761+ try :
762+ result_data = get_benchmark_results ( data )
763+ except ObjectDoesNotExist as err :
764+ return HttpResponseNotFound ( str ( err ))
882765
883766 canvas_width = int (data ['width' ]) if 'width' in data else 600
884767 canvas_height = int (data ['height' ]) if 'height' in data else 500
0 commit comments