Start api cleanup with the User model

[?]
Oct 16, 2013, 8:48 PM
SYLVCTT64DMSUBWROO5USFBSK2OCNB2NB72SSGM4MOEHMUQONEPQC

Dependencies

  • [2] HKKVG34H ToJSON is automatically called recursively
  • [3] KSBB33RE Add a dashboard
  • [4] LSZLZHJY Allow users to edit their own settings
  • [5] KYSBJAYN Allow dashes in jobset input names
  • [6] LZVO64YG Merge in the first bits of the API work
  • [7] LYVUXIGT Clean up the authorization code a bit
  • [8] Y6AHH4TH Remove the logfile and logSize columns from the database
  • [9] ZWCTAZGL added newsitems, added some admin options to clear various caches.
  • [10] S66BOMVU * Added authentication.
  • [11] SB2V735V Keep track of the database schema version
  • [12] NCC7EAXW Remove garbage from Users.pm
  • [*] XJRJ4J7M Add user registration

Change contents

  • replacement in src/lib/Hydra/Component/ToJSON.pm at line 11
    [4.2603][4.2603:3018](),[4.3018][2.0:49](),[2.49][4.3076:3464](),[4.3076][4.3076:3464]()
    my $json = { $self->get_columns };
    my $rs = $self->result_source;
    my @relnames = $rs->relationships;
    RELLOOP: foreach my $relname (@relnames) {
    my $relinfo = $rs->relationship_info($relname);
    next unless defined $relinfo->{attrs}->{accessor};
    my $accessor = $relinfo->{attrs}->{accessor};
    if ($accessor eq "single" and exists $self->{_relationship_data}{$relname}) {
    $json->{$relname} = $self->$relname;
    } else {
    unless (defined $self->{related_resultsets}{$relname}) {
    my $cond = $relinfo->{cond};
    if (ref $cond eq 'HASH') {
    foreach my $k (keys %{$cond}) {
    my $v = $cond->{$k};
    $v =~ s/^self\.//;
    next RELLOOP unless $self->has_column_loaded($v);
    [4.2603]
    [4.3464]
    if ($self->can("json_hint")) {
    my $hint = $self->json_hint;
    my %json = ();
    foreach my $column (@{$hint->{columns}}) {
    $json{$column} = $self->get_column($column);
    }
    foreach my $relname (keys %{$hint->{relations}}) {
    my $key = $hint->{relations}->{$relname};
    $json{$relname} = [ map { $_->$key } $self->$relname ];
    }
    return \%json;
    } else {
    my $json = { $self->get_columns };
    my $rs = $self->result_source;
    my @relnames = $rs->relationships;
    RELLOOP: foreach my $relname (@relnames) {
    my $relinfo = $rs->relationship_info($relname);
    next unless defined $relinfo->{attrs}->{accessor};
    my $accessor = $relinfo->{attrs}->{accessor};
    if ($accessor eq "single" and exists $self->{_relationship_data}{$relname}) {
    $json->{$relname} = $self->$relname;
    } else {
    unless (defined $self->{related_resultsets}{$relname}) {
    my $cond = $relinfo->{cond};
    if (ref $cond eq 'HASH') {
    foreach my $k (keys %{$cond}) {
    my $v = $cond->{$k};
    $v =~ s/^self\.//;
    next RELLOOP unless $self->has_column_loaded($v);
    }
    } #!!! TODO: Handle ARRAY conditions
    }
    if (defined $self->related_resultset($relname)->get_cache) {
    if ($accessor eq "multi") {
    $json->{$relname} = [ $self->$relname ];
    } else {
    $json->{$relname} = $self->$relname;
  • edit in src/lib/Hydra/Component/ToJSON.pm at line 54
    [4.3486][4.3486:3670](),[4.3670][2.50:111](),[2.111][4.3751:3776](),[4.3751][4.3751:3776](),[4.3776][2.112:169]()
    } #!!! TODO: Handle ARRAY conditions
    }
    if (defined $self->related_resultset($relname)->get_cache) {
    if ($accessor eq "multi") {
    $json->{$relname} = [ $self->$relname ];
    } else {
    $json->{$relname} = $self->$relname;
  • edit in src/lib/Hydra/Component/ToJSON.pm at line 57
    [4.3884]
    [4.3884]
    return $json;
  • edit in src/lib/Hydra/Component/ToJSON.pm at line 59
    [4.3890][4.3890:3908]()
    return $json;
  • replacement in src/lib/Hydra/Controller/User.pm at line 157
    [4.25125][4.25125:25374]()
    entity => $c->model('DB::Users')->find({ 'me.username' => $c->user->username}, {
    columns => [ "me.fullname", "me.emailaddress", "me.username", "userroles.role" ]
    , join => [ "userroles" ]
    , collapse => 1
    })
    [4.25125]
    [4.25374]
    entity => $c->model("DB::Users")->find($c->user->username)
  • replacement in src/lib/Hydra/Schema/Users.pm at line 181
    [3.5498][4.7363:7764](),[4.8929][4.7363:7764](),[4.30687][4.7363:7764](),[4.34916][4.7363:7764](),[4.7363][4.7363:7764]()
    # These lines were loaded from '/home/rbvermaa/src/hydra/src/lib/Hydra/Schema/Users.pm' found in @INC.
    # They are now part of the custom portion of this file
    # for you to hand-edit. If you do not either delete
    # this section or remove that file from @INC, this section
    # will be repeated redundantly when you re-create this
    # file again via Loader! See skip_load_external to disable
    # this feature.
    [3.5498]
    [4.3316]
    my %hint = (
    columns => [
    "fullname",
    "emailaddress",
    "username"
    ],
    relations => {
    userroles => "role"
    }
    );
  • edit in src/lib/Hydra/Schema/Users.pm at line 193
    [4.3317]
    [4.4016]
    sub json_hint {
    return \%hint;
    }
  • replacement in tests/api-test.pl at line 3
    [4.36481][4.36481:36511]()
    use Test::Simple tests => 15;
    [4.36481]
    [4.36511]
    use Test::Simple tests => 4;
    #use Test::Simple tests => 15;
  • replacement in tests/api-test.pl at line 26
    [4.37167][4.37167:37244]()
    ok($user->{userroles}->[0]->{role} eq "admin", "The root user is an admin");
    [4.37167]
    [4.37244]
    ok($user->{userroles}->[0] eq "admin", "The root user is an admin");
  • replacement in tests/api-test.pl at line 30
    [4.37386][4.37386:37466]()
    ok($user->{userroles}->[0]->{role} eq "admin", "The current user is an admin");
    [4.37386]
    [4.37466]
    ok($user->{userroles}->[0] eq "admin", "The current user is an admin");
    =begin comment
  • edit in tests/api-test.pl at line 67
    [4.39798]
    =end comment
    =cut