Description:
sends whole submission to result collecter in submission reporter, instead of just user and problem
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r123:57e6d251108e - - 2 files changed: 6 inserted, 5 deleted

@@ -120,37 +120,39
120 end
120 end
121
121
122 return options
122 return options
123 end
123 end
124
124
125 class ResultCollector
125 class ResultCollector
126 def initialize
126 def initialize
127 @results = {}
127 @results = {}
128 @problems = {}
128 @problems = {}
129 @users = {}
129 @users = {}
130 end
130 end
131
131
132 - def after_save_hook(user, problem, grading_result)
132 + def after_save_hook(submission, grading_result)
133 end
133 end
134
134
135 - def save(user, problem, grading_result)
135 + def save(submission, grading_result)
136 + user = submission.user
137 + problem = submission.problem
136 if not @problems.has_key? problem.id
138 if not @problems.has_key? problem.id
137 @problems[problem.id] = problem
139 @problems[problem.id] = problem
138 end
140 end
139 if not @users.has_key? user.id
141 if not @users.has_key? user.id
140 @users[user.id] = user
142 @users[user.id] = user
141 end
143 end
142 @results[[user.id, problem.id]] = grading_result
144 @results[[user.id, problem.id]] = grading_result
143
145
144 - after_save_hook(user, problem, grading_result)
146 + after_save_hook(submission, grading_result)
145 end
147 end
146
148
147 def print_report_by_user
149 def print_report_by_user
148 puts "---------------------"
150 puts "---------------------"
149 puts " REPORT"
151 puts " REPORT"
150 puts "---------------------"
152 puts "---------------------"
151
153
152 print "login,email"
154 print "login,email"
153 @problems.each_value do |problem|
155 @problems.each_value do |problem|
154 print ",#{problem.name}"
156 print ",#{problem.name}"
155 end
157 end
156 print "\n"
158 print "\n"
@@ -33,26 +33,25
33
33
34 class SubmissionReporter
34 class SubmissionReporter
35 def initialize(options={})
35 def initialize(options={})
36 options = {:dry_run => false, :result_collector => nil}.merge(options)
36 options = {:dry_run => false, :result_collector => nil}.merge(options)
37 @config = Grader::Configuration.get_instance
37 @config = Grader::Configuration.get_instance
38 @dry_run = options[:dry_run]
38 @dry_run = options[:dry_run]
39 @result_collector = options[:result_collector]
39 @result_collector = options[:result_collector]
40 end
40 end
41
41
42 def report(sub,test_result_dir)
42 def report(sub,test_result_dir)
43 result = read_result(test_result_dir)
43 result = read_result(test_result_dir)
44 if @result_collector
44 if @result_collector
45 - @result_collector.save(sub.user,
45 + @result_collector.save(sub,
46 - sub.problem,
47 result)
46 result)
48 end
47 end
49 save_result(sub,result)
48 save_result(sub,result)
50 end
49 end
51
50
52 def report_error(sub,msg)
51 def report_error(sub,msg)
53 save_result(sub,{:points => 0,
52 save_result(sub,{:points => 0,
54 :comment => "Grading error: #{msg}" })
53 :comment => "Grading error: #{msg}" })
55 end
54 end
56
55
57 protected
56 protected
58 def read_result(test_result_dir)
57 def read_result(test_result_dir)
You need to be logged in to leave comments. Login now