Start api cleanup with the User model
[?]
Oct 16, 2013, 8:48 PM
SYLVCTT64DMSUBWROO5USFBSK2OCNB2NB72SSGM4MOEHMUQONEPQCDependencies
- [2]
HKKVG34HToJSON is automatically called recursively - [3]
KSBB33REAdd a dashboard - [4]
LYVUXIGTClean up the authorization code a bit - [5]
Y6AHH4THRemove the logfile and logSize columns from the database - [6]
NCC7EAXWRemove garbage from Users.pm - [7]
S66BOMVU* Added authentication. - [8]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [9]
SB2V735VKeep track of the database schema version - [10]
LSZLZHJYAllow users to edit their own settings - [11]
LZVO64YGMerge in the first bits of the API work - [12]
KYSBJAYNAllow dashes in jobset input names - [*]
XJRJ4J7MAdd 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);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
return $json; - edit in src/lib/Hydra/Component/ToJSON.pm at line 59
return $json; - replacement in src/lib/Hydra/Controller/User.pm at line 157
entity => $c->model('DB::Users')->find({ 'me.username' => $c->user->username}, {columns => [ "me.fullname", "me.emailaddress", "me.username", "userroles.role" ], join => [ "userroles" ], collapse => 1})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.my %hint = (columns => ["fullname","emailaddress","username"],relations => {userroles => "role"}); - edit in src/lib/Hydra/Schema/Users.pm at line 193
sub json_hint {return \%hint;} - replacement in tests/api-test.pl at line 3
use Test::Simple tests => 15;use Test::Simple tests => 4;#use Test::Simple tests => 15; - replacement in tests/api-test.pl at line 26
ok($user->{userroles}->[0]->{role} eq "admin", "The root user is an admin");ok($user->{userroles}->[0] eq "admin", "The root user is an admin"); - replacement in tests/api-test.pl at line 30
ok($user->{userroles}->[0]->{role} eq "admin", "The current user is an admin");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