예제 #1
0
 def resume(self, admin_user_id=None):
   if self.state is Contest.PAUSED:
     self.state = Contest.STARTED
     self.save()
     LogEntry.resume_contest(self.id, admin_user_id)
   else:
     raise ContestStartedException
예제 #2
0
 def resume(self, admin_user_id=None):
     if self.state is Contest.PAUSED:
         self.state = Contest.STARTED
         self.save()
         LogEntry.resume_contest(self.id, admin_user_id)
     else:
         raise ContestStartedException
예제 #3
0
 def stop(self, admin_user_id=None):
     if self.state is Contest.STARTED or self.state is Contest.PAUSED:
         self.state = Contest.STOPPED
         self.save()
         LogEntry.stop_contest(self.id, admin_user_id)
     else:
         raise ContestNotStartedException
예제 #4
0
 def stop(self, admin_user_id=None):
   if self.state is Contest.STARTED or self.state is Contest.PAUSED:
     self.state = Contest.STOPPED
     self.save()
     LogEntry.stop_contest(self.id, admin_user_id)
   else:
     raise ContestNotStartedException
예제 #5
0
 def pause(self, admin_user_id=None):
     if self.state is Contest.STARTED:
         self.running_time = self.get_current_running_time()
         self.state = Contest.PAUSED
         self.save()
         LogEntry.pause_contest(self.id, admin_user_id)
     else:
         raise ContestNotStartedException
예제 #6
0
 def pause(self, admin_user_id=None):
   if self.state is Contest.STARTED:
     self.running_time = self.get_current_running_time()
     self.state = Contest.PAUSED
     self.save()
     LogEntry.pause_contest(self.id, admin_user_id)
   else:
     raise ContestNotStartedException
예제 #7
0
 def start(self, admin_user_id=None):
     if self.state is Contest.UNASSIGNED:
         self.state = Contest.STARTED
         self.last_start_date = now()
         self.save()
         self._preset_scores()
         LogEntry.start_contest(self.id, admin_user_id)
     elif self.state is Contest.PAUSED:
         self.resume(admin_user_id)
     else:
         raise ContestStartedException
예제 #8
0
 def skip_task(cls, contest_id, user_id, task_id):
   entry = cls.get_entry(contest_id, user_id, task_id)
   p = Participation.get_entry(contest_id, user_id)
   can_skip = p.skips_left > 0 and entry.can_skip()
   if can_skip:
     entry.skipped = True
     entry.save()
     p.skip_task()
     LogEntry.skip_task(contest_id, user_id, task_id)
   else:
     raise IntegrityError
예제 #9
0
 def start(self, admin_user_id=None):
   if self.state is Contest.UNASSIGNED:
     self.state = Contest.STARTED
     self.last_start_date = now()
     self.save()
     self._preset_scores()
     LogEntry.start_contest(self.id, admin_user_id)
   elif self.state is Contest.PAUSED:
     self.resume(admin_user_id)
   else:
     raise ContestStartedException
예제 #10
0
 def solve_task(cls, contest_id, user_id, task_id):
   entry = cls.get_entry(contest_id, user_id, task_id)
   if not entry.solved:
     if entry.skipped == True:
       score = cls.SKIPPED
     else:
       score = cls.FULL
     entry.score = score
     entry.solved = True
     entry._try_task()
     p = Participation.get_entry(contest_id, user_id)
     p.increment_score(score)
     LogEntry.solve_task(contest_id, user_id, task_id)
   else:
     raise IntegrityError
예제 #11
0
 def fail_task(cls, contest_id, user_id, task_id):
   entry = cls.get_entry(contest_id, user_id, task_id)
   entry._try_task()
   LogEntry.fail_task(contest_id, user_id, task_id)