Description:
merge
Commit status:
[Not Reviewed]
References:
merge java
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r688:b31aedc6a96e - - 1 file changed: 6 inserted, 1 deleted

@@ -272,107 +272,112
272 }
272 }
273 available_problems.each {|p| pin[p.id] = true}
273 available_problems.each {|p| pin[p.id] = true}
274 end
274 end
275 other_avaiable_problems = Problem.available.find_all {|p| pin[p.id]==nil and p.contests.length==0}
275 other_avaiable_problems = Problem.available.find_all {|p| pin[p.id]==nil and p.contests.length==0}
276 contest_problems << {
276 contest_problems << {
277 :contest => nil,
277 :contest => nil,
278 :problems => other_avaiable_problems
278 :problems => other_avaiable_problems
279 }
279 }
280 return contest_problems
280 return contest_problems
281 end
281 end
282
282
283 def solve_all_available_problems?
283 def solve_all_available_problems?
284 available_problems.each do |p|
284 available_problems.each do |p|
285 u = self
285 u = self
286 sub = Submission.find_last_by_user_and_problem(u.id,p.id)
286 sub = Submission.find_last_by_user_and_problem(u.id,p.id)
287 return false if !p or !sub or sub.points < p.full_score
287 return false if !p or !sub or sub.points < p.full_score
288 end
288 end
289 return true
289 return true
290 end
290 end
291
291
292 def available_problems
292 def available_problems
293 if not GraderConfiguration.multicontests?
293 if not GraderConfiguration.multicontests?
294 if GraderConfiguration.use_problem_group?
294 if GraderConfiguration.use_problem_group?
295 return available_problems_in_group
295 return available_problems_in_group
296 else
296 else
297 return Problem.available_problems
297 return Problem.available_problems
298 end
298 end
299 else
299 else
300 contest_problems = []
300 contest_problems = []
301 pin = {}
301 pin = {}
302 contests.enabled.each do |contest|
302 contests.enabled.each do |contest|
303 contest.problems.available.each do |problem|
303 contest.problems.available.each do |problem|
304 if not pin.has_key? problem.id
304 if not pin.has_key? problem.id
305 contest_problems << problem
305 contest_problems << problem
306 end
306 end
307 pin[problem.id] = true
307 pin[problem.id] = true
308 end
308 end
309 end
309 end
310 other_avaiable_problems = Problem.available.find_all {|p| pin[p.id]==nil and p.contests.length==0}
310 other_avaiable_problems = Problem.available.find_all {|p| pin[p.id]==nil and p.contests.length==0}
311 return contest_problems + other_avaiable_problems
311 return contest_problems + other_avaiable_problems
312 end
312 end
313 end
313 end
314
314
315 def available_problems_in_group
315 def available_problems_in_group
316 problem = []
316 problem = []
317 self.groups.each do |group|
317 self.groups.each do |group|
318 group.problems.where(available: true).each { |p| problem << p }
318 group.problems.where(available: true).each { |p| problem << p }
319 end
319 end
320 - problem.uniq!.sort! do |a,b|
320 + problem.uniq!
321 + if problem
322 + problem.sort! do |a,b|
321 case
323 case
322 when a.date_added < b.date_added
324 when a.date_added < b.date_added
323 1
325 1
324 when a.date_added > b.date_added
326 when a.date_added > b.date_added
325 -1
327 -1
326 else
328 else
327 a.name <=> b.name
329 a.name <=> b.name
328 end
330 end
329 end
331 end
330 return problem
332 return problem
333 + else
334 + return []
335 + end
331 end
336 end
332
337
333 def can_view_problem?(problem)
338 def can_view_problem?(problem)
334 if not GraderConfiguration.multicontests?
339 if not GraderConfiguration.multicontests?
335 return problem.available
340 return problem.available
336 else
341 else
337 return problem_in_user_contests? problem
342 return problem_in_user_contests? problem
338 end
343 end
339 end
344 end
340
345
341 def self.clear_last_login
346 def self.clear_last_login
342 User.update_all(:last_ip => nil)
347 User.update_all(:last_ip => nil)
343 end
348 end
344
349
345 protected
350 protected
346 def encrypt_new_password
351 def encrypt_new_password
347 return if password.blank?
352 return if password.blank?
348 self.salt = (10+rand(90)).to_s
353 self.salt = (10+rand(90)).to_s
349 self.hashed_password = User.encrypt(self.password,self.salt)
354 self.hashed_password = User.encrypt(self.password,self.salt)
350 end
355 end
351
356
352 def assign_default_site
357 def assign_default_site
353 # have to catch error when migrating (because self.site is not available).
358 # have to catch error when migrating (because self.site is not available).
354 begin
359 begin
355 if self.site==nil
360 if self.site==nil
356 self.site = Site.find_by_name('default')
361 self.site = Site.find_by_name('default')
357 if self.site==nil
362 if self.site==nil
358 self.site = Site.find(1) # when 'default has be renamed'
363 self.site = Site.find(1) # when 'default has be renamed'
359 end
364 end
360 end
365 end
361 rescue
366 rescue
362 end
367 end
363 end
368 end
364
369
365 def assign_default_contest
370 def assign_default_contest
366 # have to catch error when migrating (because self.site is not available).
371 # have to catch error when migrating (because self.site is not available).
367 begin
372 begin
368 if self.contests.length == 0
373 if self.contests.length == 0
369 default_contest = Contest.find_by_name(GraderConfiguration['contest.default_contest_name'])
374 default_contest = Contest.find_by_name(GraderConfiguration['contest.default_contest_name'])
370 if default_contest
375 if default_contest
371 self.contests = [default_contest]
376 self.contests = [default_contest]
372 end
377 end
373 end
378 end
374 rescue
379 rescue
375 end
380 end
376 end
381 end
377
382
378 def password_required?
383 def password_required?
You need to be logged in to leave comments. Login now