X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FPlack%2FApp%2FGruntmaster.pm;fp=lib%2FPlack%2FApp%2FGruntmaster.pm;h=8d9684266adb6093930aa10feea048335e249967;hb=5c5c76a0c8a2e0fed56ae94894e87c1d10a7ccbc;hp=7b927d5958b27863254b7f4617f497b2e4294e33;hpb=e2c74da60e49fefe027701ff143af2c5e0e109a4;p=gruntmaster-page.git diff --git a/lib/Plack/App/Gruntmaster.pm b/lib/Plack/App/Gruntmaster.pm index 7b927d5..8d96842 100644 --- a/lib/Plack/App/Gruntmaster.pm +++ b/lib/Plack/App/Gruntmaster.pm @@ -190,6 +190,11 @@ sub dispatch_request{ return reply 'This contest has finished' if $contest->{finished}; return reply 'This problem is private' if !admin && $private; return reply 'This problem does not belong to this contest' unless contest_has_problem $_{contest}, $_{problem}; + if ($_{contest} =~ /d[12]$/) { + my $other = $_{contest} =~ y/12/21/r; + my ($ans) = db->query('SELECT COUNT(*) FROM jobs WHERE owner = ? AND contest = ?', remote_user->{id}, $other)->flat; + return reply 'You are not allowed to participate in both divisions of a round' if $ans; + } } return reply 'Maximum source size is 10KB' if ($prog ? $prog->size : length $_{source_code}) > 10 * 1024; return reply 'You must wait 30 seconds between jobs' if !admin && time <= remote_user->{lastjob} + 30;