diff --git a/app/models/user.rb b/app/models/user.rb --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,6 +7,7 @@ class User < ActiveRecord::Base has_and_belongs_to_many :roles + has_and_belongs_to_many :groups has_many :test_requests, -> {order(submitted_at: DESC)} @@ -290,7 +291,11 @@ def available_problems if not GraderConfiguration.multicontests? - return Problem.available_problems + if GraderConfiguration.use_problem_group? + return available_problems_in_group + else + return Problem.available_problems + end else contest_problems = [] pin = {} @@ -307,6 +312,14 @@ end end + def available_problems_in_group + problem = [] + self.groups.each do |group| + group.problems.where(available: true).each { |p| problem << p } + end + return problem.uniq + end + def can_view_problem?(problem) if not GraderConfiguration.multicontests? return problem.available