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