Fix and clean up editing project settings

[?]
Oct 3, 2013, 12:05 PM
H66SHOS74FVD2PCJH63MLRMFZQTPNTCGCWQKAZVTZXYCREJDUGOAC

Dependencies

  • [2] NPG7RSJL The field is actually enabled, not disabled
  • [3] OR5SJ42Y Show releases in a tab on the project page
  • [4] ZRRPBEI4 Make jobset deletion consistent with project deletion
  • [5] 3NO4SUUG Show when a Project's jobsets are disabled
  • [6] LPY3EY2B Fix showing the project's display name
  • [7] UWVMQIAC * Refactoring.
  • [8] HQGXL4MX Add validation for project and jobset names
  • [9] LZVO64YG Merge in the first bits of the API work
  • [10] LZO3C2KI * Hack around those SQLite timeouts: just retry the transaction.
  • [11] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [12] BHJ62LYE * Allow authorised users to create projects.
  • [13] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [14] 3PNG7NIB Remove trailing whitespace
  • [15] QTFVCDIF added hide feature for project/jobset
  • [16] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [17] JARRBLZD Bootstrapify the Hydra forms (except the project and jobset edit pages)

Change contents

  • edit in src/lib/Hydra/Controller/Project.pm at line 3
    [3.1283]
    [3.1283]
    use utf8;
  • edit in src/lib/Hydra/Controller/Project.pm at line 13
    [3.1561]
    [3.2214]
    $c->stash->{params}->{name} //= $projectName;
  • replacement in src/lib/Hydra/Controller/Project.pm at line 15
    [3.2215][3.15706:15785]()
    my $project = $c->model('DB::Projects')->find($projectName, { columns => [
    [3.2215]
    [3.15785]
    $c->stash->{project} = $c->model('DB::Projects')->find($projectName, { columns => [
  • edit in src/lib/Hydra/Controller/Project.pm at line 24
    [3.15958][3.15958:15978]()
    "views.name",
  • replacement in src/lib/Hydra/Controller/Project.pm at line 28
    [2.25][3.16051:16176](),[3.26][3.16051:16176](),[3.16051][3.16051:16176]()
    ], join => [ 'owner', 'views', 'releases', 'jobsets' ], order_by => { -desc => "releases.timestamp" }, collapse => 1 });
    [2.25]
    [3.1712]
    ], join => [ 'owner', 'releases', 'jobsets' ], order_by => { -desc => "releases.timestamp" }, collapse => 1 });
  • replacement in src/lib/Hydra/Controller/Project.pm at line 30
    [3.1713][3.16177:16570]()
    if ($project) {
    $c->stash->{project} = $project;
    } else {
    if ($c->action->name eq "project" and $c->request->method eq "PUT") {
    $c->stash->{projectName} = $projectName;
    } else {
    $self->status_not_found(
    $c,
    message => "Project $projectName doesn't exist."
    );
    $c->detach;
    }
    [3.1713]
    [3.16570]
    if (!$c->stash->{project} && !($c->action->name eq "project" and $c->request->method eq "PUT")) {
    $self->status_not_found($c, message => "Project ‘$projectName’ doesn't exist.");
    $c->detach;
  • replacement in src/lib/Hydra/Controller/Project.pm at line 49
    [3.16696][3.16696:16776]()
    $self->status_ok(
    $c,
    entity => $c->stash->{project}
    );
    [3.16696]
    [3.1942]
    $self->status_ok($c, entity => $c->stash->{project});
  • edit in src/lib/Hydra/Controller/Project.pm at line 56
    [3.16861][3.16861:17030]()
    error($c, "Cannot rename project `$c->stash->{params}->{oldName}' over existing project `$c->stash->{project}->name") if defined $c->stash->{params}->{oldName};
  • replacement in src/lib/Hydra/Controller/Project.pm at line 66
    [3.17437][3.17437:17853]()
    } elsif (defined $c->stash->{params}->{oldName}) {
    my $project = $c->model('DB::Projects')->find($c->stash->{params}->{oldName});
    if (defined $project) {
    requireProjectOwner($c, $project);
    txn_do($c->model('DB')->schema, sub {
    updateProject($c, $project);
    });
    my $uri = $c->uri_for($self->action_for("project"), [$project->name]);
    [3.17437]
    [3.17853]
    }
  • replacement in src/lib/Hydra/Controller/Project.pm at line 68
    [3.17854][3.17854:18409]()
    if ($c->req->looks_like_browser) {
    $c->res->redirect($uri . "#tabs-configuration");
    } else {
    $self->status_created(
    $c,
    location => "$uri",
    entity => { name => $project->name, uri => "$uri", type => "project" }
    );
    }
    } else {
    $self->status_not_found(
    $c,
    message => "Project $c->stash->{params}->{oldName} doesn't exist."
    );
    }
    } else {
    [3.17854]
    [3.18409]
    else {
  • edit in src/lib/Hydra/Controller/Project.pm at line 70
    [3.18447][3.18447:18572]()
    error($c, "Invalid project name: ‘$c->stash->{projectName}’") if $c->stash->{projectName} !~ /^$projectNameRE$/;
  • replacement in src/lib/Hydra/Controller/Project.pm at line 78
    [3.18913][3.18913:19002]()
    {name => $c->stash->{projectName}, displayname => "", owner => $owner});
    [3.18913]
    [3.19002]
    { name => ".tmp.$$." . int(rand(100000)), displayname => "", owner => $owner });
  • edit in src/lib/Hydra/Controller/Project.pm at line 121
    [3.792][3.19581:19858]()
    my $newName = trim $c->stash->{params}->{name};
    my $oldName = trim $c->stash->{project}->name;
    unless ($oldName eq $newName) {
    $c->stash->{params}->{oldName} = $oldName;
    $c->stash->{projectName} = $newName;
    undef $c->stash->{project};
    }
  • edit in src/lib/Hydra/Controller/Project.pm at line 148
    [3.1272][3.1272:1273](),[3.1273][3.19887:19952](),[3.19952][3.2232:2233](),[3.3661][3.2232:2233]()
    $c->stash->{projectName} = trim $c->stash->{params}->{name};
  • replacement in src/lib/Hydra/Controller/Project.pm at line 179
    [3.5858][3.4492:4614](),[3.20412][3.4492:4614](),[3.4492][3.4492:4614]()
    error($c, "Invalid owner: $owner")
    unless defined $c->model('DB::Users')->find({username => $owner});
    [3.20412]
    [3.4647]
    error($c, "The user name ‘$owner’ does not exist.")
    unless defined $c->model('DB::Users')->find($owner);
  • replacement in src/lib/Hydra/Controller/Project.pm at line 183
    [3.5515][3.20413:20479](),[3.20479][3.851:948](),[3.851][3.851:948]()
    my $projectName = $c->stash->{projectName} or $project->name;
    error($c, "Invalid project name: ‘$projectName’") if $projectName !~ /^$projectNameRE$/;
    [3.5515]
    [3.2242]
    my $projectName = $c->stash->{params}->{name};
    error($c, "Invalid project name ‘$projectName’.") if $projectName !~ /^$projectNameRE$/;
  • edit in src/lib/Hydra/Controller/Project.pm at line 186
    [3.2243]
    [3.20480]
    error($c, "Cannot rename project to ‘$projectName’ since that name is already taken.")
    if $projectName ne $project->name && defined $c->model('DB::Projects')->find($projectName);
  • replacement in src/lib/Hydra/Controller/Project.pm at line 190
    [3.20543][3.1016:1091](),[3.1016][3.1016:1091]()
    error($c, "Invalid display name: $displayName") if $displayName eq "";
    [3.20543]
    [3.1091]
    error($c, "You must specify a display name.") if $displayName eq "";