From: Marius Gavrilescu Date: Wed, 4 Feb 2015 13:16:50 +0000 (+0200) Subject: Make problem_list return solutions if requested (for editorial support) X-Git-Tag: 5999.000_014~90 X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=4db1f7258198bcbb2398e05488f8a0e7a6887337;p=gruntmaster-data.git Make problem_list return solutions if requested (for editorial support) --- diff --git a/lib/Gruntmaster/Data.pm b/lib/Gruntmaster/Data.pm index fd61a21..16a6176 100644 --- a/lib/Gruntmaster/Data.pm +++ b/lib/Gruntmaster/Data.pm @@ -74,7 +74,9 @@ sub user_entry { sub problem_list { my ($self, %args) = @_; - my $rs = $self->problems->search(undef, {order_by => 'me.name', columns => PROBLEM_PUBLIC_COLUMNS, prefetch => 'owner'}); + my @columns = @{PROBLEM_PUBLIC_COLUMNS()}; + push @columns, 'solution' if $args{solution} && $args{contest} && !$self->contest($args{contest})->is_running; + my $rs = $self->problems->search(undef, {order_by => 'me.name', columns => \@columns, prefetch => 'owner'}); $rs = $rs->search({-or => ['contest_problems.contest' => undef, 'contest.stop' => {'<=', time}], 'me.private' => 0}, {join => {'contest_problems' => 'contest'}, distinct => 1}) unless $args{contest} || $args{private}; $rs = $rs->search({'contest_problems.contest' => $args{contest}}, {join => 'contest_problems'}) if $args{contest}; $rs = $rs->search({'me.owner' => $args{owner}}) if $args{owner}; @@ -90,10 +92,10 @@ sub problem_list { sub problem_entry { my ($self, $id, $contest, $user) = @_; my $running = $contest && $self->contest($contest)->is_running; - my $columns = PROBLEM_PUBLIC_COLUMNS; - push @$columns, 'statement'; - push @$columns, 'solution' unless $running; - my $pb = $self->problems->find($id, {columns => $columns, prefetch => 'owner'}); + my @columns = @{PROBLEM_PUBLIC_COLUMNS()}; + push @columns, 'statement'; + push @columns, 'solution' unless $running; + my $pb = $self->problems->find($id, {columns => \@columns, prefetch => 'owner'}); my $open; $open = $self->opens->find_or_create({ contest => $contest,