예제 #1
0
 def handle(self, *args, **kw):
     for n, (user_id, rating, type, film_id, actor_id,
             director_id) in enumerate(self.ratings()):
         redis_intf.rate(user_id,
                         rating,
                         film_id=film_id,
                         actor_id=actor_id,
                         director_id=director_id,
                         type=type)
         if not (n % 1000):
             print n
예제 #2
0
def rate(user, value, film_id=None, actor_id=None, director_id=None, type=1, overwrite=True, check_if_exists=False, redis_only=False, skip_activity=False, **kw):
    if not user.id and hasattr(user, 'store_to_db'):
        # temporary anonymouse user, store to db on first rating
        user.store_to_db()

    assert user.id

    if not redis_only or not settings.USE_REDIS:
        if not settings.USE_REDIS:
            ret = Rating.rate(user, value, film_id, actor_id, director_id, type, overwrite=overwrite, _skip_activity=skip_activity, **kw)
        else:
            defer(Rating.rate, user, value, film_id, actor_id, director_id, type, overwrite=overwrite, _skip_activity=skip_activity, **kw)

    if settings.USE_REDIS:
        ret = redis_intf.rate(user.id, value, film_id, actor_id, director_id, type, overwrite=overwrite, check_if_exists=check_if_exists)

    profile = user.get_profile()
    no_rec = profile.recommendations_status == profile.NO_RECOMMENDATIONS

    if settings.RECOMMENDATIONS_ENGINE == 'film20.new_recommendations.recommendations_engine':
        engine.compute_user_features(user)
        if no_rec:
            profile.recommendations_status = profile.FAST_RECOMMENDATIONS
            profile.save()
    else:
        if no_rec and len(get_user_ratings(user.id)) >= settings.RECOMMENDATIONS_MIN_VOTES_USER:
            engine.compute_user_features(user, True, initial=True)
            profile.recommendations_status = profile.FAST_RECOMMENDATIONS
            profile.save()
    return ret
 def handle(self, *args, **kw):
     for n, (user_id, rating, type, film_id, actor_id, director_id) in enumerate(self.ratings()):
         redis_intf.rate(user_id, rating, film_id=film_id, actor_id=actor_id, director_id=director_id, type=type)
         if not (n % 1000):
             print n