diff --git a/src/Hydra/lib/Hydra/Controller/Root.pm b/src/Hydra/lib/Hydra/Controller/Root.pm index 9a114fda..8d35fb8f 100644 --- a/src/Hydra/lib/Hydra/Controller/Root.pm +++ b/src/Hydra/lib/Hydra/Controller/Root.pm @@ -213,7 +213,7 @@ sub getReleaseSet { $c->stash->{releaseSet} = $releaseSet; (my $primaryJob) = $releaseSet->releasesetjobs->search({isprimary => 1}); - die "Release set $releaseSetName doesn't have a primary job." if !defined $primaryJob; + #die "Release set $releaseSetName doesn't have a primary job." if !defined $primaryJob; $c->stash->{jobs} = [$releaseSet->releasesetjobs->search({}, {order_by => ["isprimary DESC", "job", "attrs"]})]; @@ -275,6 +275,26 @@ sub updateReleaseSet { $releaseSet->name($releaseSetName); $releaseSet->description(trim $c->request->params->{description}); $releaseSet->update; + + $releaseSet->releasesetjobs->delete_all; + + foreach my $param (keys %{$c->request->params}) { + next unless $param =~ /^job-(\d+)-name$/; + my $baseName = $1; + + my $name = trim $c->request->params->{"job-$baseName-name"}; + my $description = trim $c->request->params->{"job-$baseName-description"}; + my $attrs = trim $c->request->params->{"job-$baseName-attrs"}; + + $releaseSet->releasesetjobs->create( + { job => $name + , description => $description + , attrs => $attrs + , isprimary => $c->request->params->{"primary"} eq $baseName + }); + } + + die "There must be one primary job." if $releaseSet->releasesetjobs->search({isprimary => 1})->count != 1; } diff --git a/src/Hydra/root/edit-releaseset.tt b/src/Hydra/root/edit-releaseset.tt index 18fd8fcb..2b835935 100644 --- a/src/Hydra/root/edit-releaseset.tt +++ b/src/Hydra/root/edit-releaseset.tt @@ -17,6 +17,30 @@ </tr> </table> + <table class="tablesorter"> + <thead> + <tr> + <th>Primary job</th> + <th>Job name</th> + <th>Description</th> + <th>Constraint</th> + </tr> + </thead> + <tbody> + [% n = 0 %] + [% FOREACH job IN jobs %] + <tr> + <td><input type="radio" name="primary" [% IF job.isprimary %] + checked="checked" [% END %] [% HTML.attributes(value => "$n") %] /> [% n %]</td> + <td><input type="text" class="string" [% HTML.attributes(name => "job-$n-name", value => job.job) %] /></td> + <td><input type="text" class="string" [% HTML.attributes(name => "job-$n-description", value => job.description) %] /></td> + <td><input type="text" class="string" [% HTML.attributes(name => "job-$n-attrs", value => job.attrs) %] /></td> + </tr> + [% n = n + 1 %] + [% END %] + </tbody> + </table> + <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p> </form>