Skip to content
Snippets Groups Projects
Commit 6aa3d33d authored by Flavio TARSETTI's avatar Flavio TARSETTI
Browse files

[reports] API and Promises implementation for experiments results when...

[reports] API and Promises implementation for experiments results when accessed by author. Fixes #418
parent 56c9aba7
No related branches found
No related tags found
1 merge request!177[reports] API and Promises implementation for experiments results when accessed by author. Fixes #418
Pipeline #
......@@ -505,3 +505,44 @@ class ReportResultsView(CommonContextMixin, generics.RetrieveAPIView):
results[experiment.fullname()] = serializer.data
return Response(results)
#----------------------------------------------------------
class ReportResultsAllExperimentsView(CommonContextMixin, generics.RetrieveAPIView):
model = Report
serializer_class = ExperimentResultsSerializer
permission_classes = [permissions.IsAuthenticated, IsAuthor]
def get_queryset(self):
owner_name = self.kwargs.get('owner_name')
report_name = self.kwargs.get('report_name')
report = get_object_or_404(Report, author__username=owner_name, name=report_name)
self.check_object_permissions(self.request, report)
return report
def get(self, request, owner_name=None, report_name=None, number=None):
report = self.get_queryset()
results = {}
report_content = json.loads(report.content)
if not report_content.has_key("alias_experiments"):
report_content["alias_experiments"] = {}
for experiment in report.experiments.iterator():
serializer = self.get_serializer(experiment, fields=['results', 'blocks_status', 'execution_info', 'declaration'])
if not report_content["alias_experiments"].has_key(experiment.fullname()):
report_content["alias_experiments"][experiment.fullname()] = experiment.name
if report.status == Report.LOCKED:
results[report_content["alias_experiments"][experiment.fullname()]] = serializer.data
else:
results[experiment.fullname()] = serializer.data
return Response(results)
......@@ -48,6 +48,12 @@ urlpatterns = [
name='results'
),
url(
r'^(?P<owner_name>\w+)/(?P<report_name>[\w\W]+)/results_author/$',
api.ReportResultsAllExperimentsView.as_view(),
name='results'
),
url(
r'^(?P<owner_name>\w+)/$',
api.UserReportListView.as_view(),
......
......@@ -75,18 +75,37 @@ app.controller('reportController',['$scope', 'reportFactory', 'experimentFactory
{
$scope.report = reportData;
$scope.report.url_prefix = $scope.url_prefix;
var experiments = $scope.report.experiments;
if(experiments != undefined)
if($scope.report.content.alias_experiments != undefined)
{
for (var i = 0; i < experiments.length ; i++)
{
getExperimentData(experiments[i]);
//$state.go("beat.reportInfo")
}
$scope.report_experiments_alias = $scope.report.content.alias_experiments;
}
var promises = [];
function lastTask(){
getPlotters();
}
if(experiments != undefined)
{
promises.push(getExperimentDataForAuthor(experiments));
$scope.q.all(promises).then(lastTask);
}
//if(experiments != undefined)
//{
// for (var i = 0; i < experiments.length ; i++)
// {
// getExperimentData(experiments[i]);
// //$state.go("beat.reportInfo")
// }
// getPlotters();
//}
})
.error(function (error)
{
......@@ -173,6 +192,39 @@ app.controller('reportController',['$scope', 'reportFactory', 'experimentFactory
})
}
function getExperimentDataForAuthor(all_experiments)
{
experimentFactory.getAllExperimentResultsForAuthor($scope.user, $scope.report_id, $scope.url_prefix)
.then(function (experiments)
{
$scope.report_experiments = experiments;
$scope.report.all_experiments = experiments;
var experiment_aliases = Object.keys(experiments);
for(var i = 0; i < experiment_aliases.length; i++)
{
var experiment_alias = experiment_aliases[i];
if($scope.report.content.alias_experiments != undefined)
{
if($scope.report.content.alias_experiments[experiment_alias] != undefined)
{
setExperimentAliasFromContent(experiment_alias, $scope.report.content.alias_experiments[experiment_alias]);
}
else
{
setExperimentAlias(experiment_alias);
}
}
else
{
setExperimentAlias(experiment_alias);
}
intersectBlocks(experiment_alias);
algorithmParameters(experiment_alias);
}
})
}
function getExperimentData(experiment_id)
{
......
......@@ -32,6 +32,15 @@ app.factory('experimentFactory', function($http, $q)
});
},
getAllExperimentResultsForAuthor: function (user, report_id, url_prefix)
{
urlBase = url_prefix + '/api/v1/reports';
return $http.get(urlBase + '/' + user + '/' + report_id + '/results_author/')
.then(function(response){
return response.data;
});
},
getAllExperimentResults: function (url_prefix, report_number)
{
urlBase = url_prefix + '/api/v1/reports';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment