diff --git a/treeherder/webapp/api/push.py b/treeherder/webapp/api/push.py index 905e64ce963..1c9bfe88205 100644 --- a/treeherder/webapp/api/push.py +++ b/treeherder/webapp/api/push.py @@ -34,7 +34,7 @@ def list(self, request, project): meta = {} # support ranges for date as well as revisions(changes) like old tbpl - for param in ["fromchange", "tochange", "startdate", "enddate", "revision"]: + for param in ["fromchange", "tochange", "startdate", "enddate", "revision", "commit_revision"]: v = filter_params.get(param, None) if v: del filter_params[param] @@ -84,8 +84,7 @@ def list(self, request, project): "push_timestamp__lt": to_timestamp(real_end_date) }) elif param == 'revision': - # revision can be either the revision of the push itself, or - # any of the commits it refers to + # revision must be the tip revision of the push itself revision_field = 'revision__startswith' if len(value) < 40 else 'revision' filter_kwargs = {revision_field: value} pushes = pushes.filter(**filter_kwargs) @@ -93,6 +92,11 @@ def list(self, request, project): if len(meta['revision']) == 40 else "revisions_short_revision" filter_params.update({rev_key: meta['revision']}) self.report_if_short_revision(param, value) + elif param == 'commit_revision': + # revision can be either the revision of the push itself, or + # any of the commits it refers to + pushes = pushes.filter(commits__revision=value) + self.report_if_short_revision(param, value) for param in ['push_timestamp__lt', 'push_timestamp__lte', 'push_timestamp__gt', 'push_timestamp__gte']: diff --git a/ui/js/controllers/perf/compare.js b/ui/js/controllers/perf/compare.js index 53547cb1fe3..687507fdccc 100644 --- a/ui/js/controllers/perf/compare.js +++ b/ui/js/controllers/perf/compare.js @@ -208,7 +208,7 @@ perf.controller('CompareResultsCtrl', [ // TODO: duplicated in comparesubtestctrl function verifyRevision(project, revision, rsid) { - return PushModel.getList({ repo: project.name, revision }) + return PushModel.getList({ repo: project.name, commit_revision: revision }) .then(async (resp) => { if (resp.ok) { const { results } = await resp.json(); @@ -351,7 +351,7 @@ perf.controller('CompareSubtestResultsCtrl', [ $httpParamSerializer) { // TODO: duplicated from comparectrl function verifyRevision(project, revision, rsid) { - return PushModel.getList({ repo: project.name, revision }) + return PushModel.getList({ repo: project.name, commit_revision: revision }) .then(async (resp) => { const { results } = await resp.json(); const resultSet = results[0]; @@ -634,7 +634,7 @@ perf.controller('CompareSubtestDistributionCtrl', ['$scope', '$stateParams', '$q const fetchAndDrawReplicateGraph = function (project, revision, subtestSignature, target) { const replicateData = {}; - return PushModel.getList({ repo: project, revision }) + return PushModel.getList({ repo: project, commit_revision: revision }) .then(async (resp) => { const { results } = await resp.json(); replicateData.resultSet = results[0]; diff --git a/ui/perfherder/SelectorCard.jsx b/ui/perfherder/SelectorCard.jsx index c33a8516caf..4a3a08011fb 100644 --- a/ui/perfherder/SelectorCard.jsx +++ b/ui/perfherder/SelectorCard.jsx @@ -159,7 +159,7 @@ export default class SelectorCard extends React.Component { const url = `${getProjectUrl( pushEndpoint, selectedRepo, - )}${createQueryParams({ revision: value })}`; + )}${createQueryParams({ commit_revision: value })}`; const { data: revisions, failureStatus } = await getData(url);