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
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