Exemple #1
0
 def progress(self):
     contest = getattr(self.request, 'contest', False)
     if contest:
         return Progress(
                 0,
                 settings.FBAPP['config'].get('movies_to_rate_for_progress', 6)
         )
     return Progress(
             Rating.count_for_user(self.user),
             settings.RECOMMENDATIONS_MIN_VOTES_USER
     )
Exemple #2
0
def rating_progress(context, user):
    vote_cnt = user.is_authenticated() and Rating.count_for_user(user) or 0
    MIN_VOTES = settings.RECOMMENDATIONS_MIN_VOTES_USER

    count = min(vote_cnt, MIN_VOTES)
    left = MIN_VOTES - count
    percent = int(round(count * 100.0 / MIN_VOTES))
    
    return {
        'count':count,
        'left':left,
        'percent':percent,
    }
Exemple #3
0
    def test_anonymous_rating(self):
        from django.core.urlresolvers import reverse

        self.client = self.client_class()

        self.assertTrue(Film.objects.tagged('dramat'))

        rate_url = reverse('rate_films')
        response = self.client.get(rate_url)
        to_rate = list(response.context['films'])
        self.assertTrue(to_rate)

        request = response.context['request']
        username = request.unique_user.username
        self.assertTrue(username.startswith('tmp-'))
        self.assertNotEquals(username, 'tmp-anonymous')
        self.assertFalse(request.unique_user.id)

        self.assertFalse(User.objects.filter(username__startswith='tmp-', is_active=False))
        self.client.post('/ajax/rate-film/', {'film_id':to_rate[0].id, 'rating':10})
        user = User.objects.get(username__startswith='tmp-', is_active=False)
        username = user.username

        for i, film in enumerate(to_rate[1:]):
            self.client.post('/ajax/rate-film/', {'film_id':film.id, 'rating':i+1})

        cnt = len(to_rate)
        self.assertEquals(cnt, 6)
        
        self.assertEquals(Rating.count_for_user(user), cnt)

        left = max(0, settings.RECOMMENDATIONS_MIN_VOTES_USER - cnt)

        if left:
            for i in range(left / settings.RATING_FILMS_NUMBER + 1):
                response = self.client.get(rate_url)
                for film in list(response.context['films']):
                    self.client.post('/ajax/rate-film/', {'film_id':film.id, 'rating':5})
                    left -= 1
                    if not left:
                        break
        
        # extra fetch to make sure few films are marked as seen
        response = self.client.get(rate_url)
        to_rate = list(response.context['films'])
        data = {'prev_film_ids': ','.join(str(f.id) for f in to_rate)}
        self.client.post(rate_url, data)

        self.assertEquals(Rating.count_for_user(user), settings.RECOMMENDATIONS_MIN_VOTES_USER)

        self.assertTrue(Profile.objects.get(user=user).recommendations_status in (Profile.FAST_RECOMMENDATIONS, Profile.NORMAL_RECOMMENDATIONS))

        self.assertFalse(UserActivity.objects.all())

        response = self.client.post(reverse('acct_signup'), {
            'email': '*****@*****.**',
            'username': '******',
            'password1': 'abcdef123',
            'password2': 'abcdef123',
        })
        self.assertEquals(response.status_code, 302)
        self.assertTrue(response['Location'].endswith(reverse('main_page')))
        
        user = User.objects.get(username='******')
        
        self.assertEquals(len(rating_helper.get_user_ratings(user.id)), settings.RECOMMENDATIONS_MIN_VOTES_USER)
        self.assertTrue(len(rating_helper.get_seen_films(user)))

        # check if user has public rating activities
        activities = UserActivity.objects.filter(activity_type=UserActivity.TYPE_RATING, user=user)
        self.assertTrue(activities)

        # make sure temporary username was updated
        self.assertFalse(activities.filter(username__startswith='tmp-'))
Exemple #4
0
 def progress(self):
     return Progress(
             Rating.count_for_user(self.user),
             1000
     )