Fix jobset input handling in the API

[?]
Oct 24, 2013, 5:00 PM
VZX6HJ3I35NVK6L4FP7ASLNAMLMGPAESPQAAYZEUCXYKFUA6HTAQC

Dependencies

  • [2] NIX2TKYV Use redirectJSON
  • [3] K3HODXGH Check all inputs for blame but only email selected inputs
  • [4] OOQ2D3KC * Refactoring: move fetchInput out of hydra_scheduler into a separate
  • [5] LZVO64YG Merge in the first bits of the API work
  • [6] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [7] ZCTQCN3E Use inputTypes from plugins to determine valid input types
  • [8] ZFEN2MAO Simplify jobset cloning
  • [9] TQVKZQUG Use the REST API in the web interface for editing jobsets
  • [10] RQI3GRC6 Enable setting checkresponsible in the edit jobset form
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] OX6NYJDV Split viewing and editing a jobset

Change contents

  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 221
    [4.2580][4.137:497]()
    foreach my $param (keys %{$c->stash->{params}}) {
    next unless $param =~ /^input-(\w+)-name$/;
    my $baseName = $1;
    next if $baseName eq "template";
    my $name = $c->stash->{params}->{$param};
    my $type = $c->stash->{params}->{"input-$baseName-type"};
    my $values = $c->stash->{params}->{"input-$baseName-values"};
    [4.2580]
    [4.2750]
    foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
    my $inputData = $c->stash->{params}->{inputs}->{$name};
    my $type = $inputData->{type};
    my $values = $inputData->{values};
    my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 233
    [4.114][3.0:110]()
    emailresponsible => defined $c->stash->{params}->{"input-$baseName-emailresponsible"} ? 1 : 0
    [4.114]
    [4.208]
    emailresponsible => $emailresponsible
  • edit in src/root/edit-jobset.tt at line 181
    [4.2745]
    [2.0]
    var formElements = $(this).parents("form").serializeArray();
    var data = { 'inputs': {} };
    var inputs = {};
    for (var i = 0; i < formElements.length; i++) {
    var elem = formElements[i];
    var match = elem.name.match(/^input-(\w+)-(\w+)$/);
    if (match === null) {
    data[elem.name] = elem.value;
    } else {
    var baseName = match[1];
    var param = match[2];
    if (baseName === "template") {
    continue;
    }
    if (!(baseName in inputs)) {
    inputs[baseName] = {};
    }
    if (param === "name") {
    data.inputs[elem.value] = inputs[baseName];
    } else {
    inputs[baseName][param] = elem.value;
    }
    }
    }
  • replacement in src/root/edit-jobset.tt at line 214
    [4.2949][4.2949:2998]()
    data: $(this).parents("form").serialize(),
    [4.2949]
    [2.20]
    data: JSON.stringify(data),
    contentType: 'application/json',