This commit is contained in:
Eelco Dolstra 2012-04-03 11:28:59 +02:00
parent db2b2b6134
commit 30e2b9046a
3 changed files with 15 additions and 11 deletions

View file

@ -362,12 +362,8 @@ sub evals : Chained('jobset') PathPart('evals') Args(0) {
# Redirect to the latest finished evaluation of this jobset. # Redirect to the latest finished evaluation of this jobset.
sub latest_eval : Chained('jobset') PathPart('latest-eval') { sub latest_eval : Chained('jobset') PathPart('latest-eval') {
my ($self, $c, @args) = @_; my ($self, $c, @args) = @_;
my ($eval) = $c->stash->{jobset}->jobsetevals->search( my $eval = getLatestFinishedEval($c, $c->stash->{jobset})
{ hasnewbuilds => 1 }, or notFound($c, "No evaluation found.");
{ order_by => "id DESC", rows => 1
, where => \ "not exists (select 1 from JobsetEvalMembers m join Builds b on m.build = b.id where m.eval = me.id and b.finished = 0)"
});
notFound($c, "No evaluation found.") unless defined $eval;
my $uri = $c->uri_for($c->controller('JobsetEval')->action_for("view"), [$eval->id]); my $uri = $c->uri_for($c->controller('JobsetEval')->action_for("view"), [$eval->id]);
$uri .= "/" . join("/", @args) if scalar @args > 0; $uri .= "/" . join("/", @args) if scalar @args > 0;
$c->res->redirect($uri); $c->res->redirect($uri);

View file

@ -38,11 +38,7 @@ sub view : Chained('eval') PathPart('') Args(0) {
} elsif (defined $compare && $compare =~ /^($jobNameRE)$/) { } elsif (defined $compare && $compare =~ /^($jobNameRE)$/) {
my $j = $c->stash->{project}->jobsets->find({name => $compare}) my $j = $c->stash->{project}->jobsets->find({name => $compare})
or notFound($c, "Jobset $compare doesn't exist."); or notFound($c, "Jobset $compare doesn't exist.");
($eval2) = $j->jobsetevals->search( $eval2 = getLatestFinishedEval($c, $j);
{ hasnewbuilds => 1 },
{ order_by => "id DESC", rows => 1
, where => \ "not exists (select 1 from JobsetEvalMembers m join Builds b on m.build = b.id where m.eval = me.id and b.finished = 0)"
});
} else { } else {
($eval2) = $eval->jobset->jobsetevals->search( ($eval2) = $eval->jobset->jobsetevals->search(
{ hasnewbuilds => 1, id => { '<', $eval->id } }, { hasnewbuilds => 1, id => { '<', $eval->id } },

View file

@ -12,6 +12,7 @@ our @EXPORT = qw(
error notFound error notFound
requireLogin requireProjectOwner requireAdmin requirePost isAdmin isProjectOwner requireLogin requireProjectOwner requireAdmin requirePost isAdmin isProjectOwner
trim trim
getLatestFinishedEval
$pathCompRE $relPathRE $relNameRE $jobNameRE $systemRE $pathCompRE $relPathRE $relNameRE $jobNameRE $systemRE
@buildListColumns @buildListColumns
); );
@ -168,6 +169,17 @@ sub trim {
} }
sub getLatestFinishedEval {
my ($c, $jobset) = @_;
my ($eval) = $jobset->jobsetevals->search(
{ hasnewbuilds => 1 },
{ order_by => "id DESC", rows => 1
, where => \ "not exists (select 1 from JobsetEvalMembers m join Builds b on m.build = b.id where m.eval = me.id and b.finished = 0)"
});
return $eval;
}
# Security checking of filenames. # Security checking of filenames.
Readonly our $pathCompRE => "(?:[A-Za-z0-9-\+\._][A-Za-z0-9-\+\._]*)"; Readonly our $pathCompRE => "(?:[A-Za-z0-9-\+\._][A-Za-z0-9-\+\._]*)";
Readonly our $relPathRE => "(?:$pathCompRE(?:/$pathCompRE)*)"; Readonly our $relPathRE => "(?:$pathCompRE(?:/$pathCompRE)*)";