def test_users_with_valid_completed_attempt_counts(self): """ users_with_valid_completed_attempt_counts should return counts of all attempts completed within the time threshold, sorted by highest number of attempts """ task = TaskFactory.create() user1 = UserFactory.create() user2 = UserFactory.create() # Invalid attempt TaskAttemptFactory.create(user=user1, state=TaskAttempt.FINISHED, task=task) # Valid attempts ValidTaskAttemptFactory.create_batch(2, user=user1, state=TaskAttempt.FINISHED, task=task) ValidTaskAttemptFactory.create(user=user2, state=TaskAttempt.FINISHED, task=task) ValidTaskAttemptFactory.create(user=user1, state=TaskAttempt.STARTED, task=task) eq_(user1.taskattempt_set.filter(state=TaskAttempt.STARTED).count(), 1) eq_(user1.taskattempt_set.filter(state=TaskAttempt.FINISHED).count(), 3) eq_(user2.taskattempt_set.filter(state=TaskAttempt.FINISHED).count(), 1) qs = User.users_with_valid_completed_attempt_counts() eq_(len(qs), 2) eq_(qs[0], user1) eq_(qs[0].valid_completed_attempts_count, 2) eq_(qs[1], user2) eq_(qs[1].valid_completed_attempts_count, 1)
def test_users_with_valid_completed_attempt_counts(self): """ users_with_valid_completed_attempt_counts should return counts of all attempts completed within the time threshold, sorted by highest number of attempts """ task = TaskFactory.create() user1 = UserFactory.create() user2 = UserFactory.create() # Invalid attempt TaskAttemptFactory.create(user=user1, state=TaskAttempt.FINISHED, task=task) # Valid attempts ValidTaskAttemptFactory.create_batch(2, user=user1, state=TaskAttempt.FINISHED, task=task) ValidTaskAttemptFactory.create(user=user2, state=TaskAttempt.FINISHED, task=task) ValidTaskAttemptFactory.create(user=user1, state=TaskAttempt.STARTED, task=task) eq_(user1.taskattempt_set.filter(state=TaskAttempt.STARTED).count(), 1) eq_( user1.taskattempt_set.filter(state=TaskAttempt.FINISHED).count(), 3) eq_( user2.taskattempt_set.filter(state=TaskAttempt.FINISHED).count(), 1) qs = User.users_with_valid_completed_attempt_counts() eq_(len(qs), 2) eq_(qs[0], user1) eq_(qs[0].valid_completed_attempts_count, 2) eq_(qs[1], user2) eq_(qs[1].valid_completed_attempts_count, 1)
class LeaderboardView(generic.ListView): template_name = 'tasks/leaderboard.html' queryset = User.users_with_valid_completed_attempt_counts()[0:20] context_object_name = 'leaders'