def film_similar_ratings(request, film=None): user = request.user film = film or get_object_or_404(Film, id=request.GET.get('film_id')) ratings = () if user.is_authenticated(): key = cache.Key("film_similar_ratings", film, user) ratings = cache.get(key) if ratings is None: N_SIMILAR = 100 N = 5 query = User.objs.similar(user)[:N_SIMILAR] similar_users = cache_query(query, "similar_users", user) if similar_users: d = dict((u.id, u) for u in similar_users) ratings = Rating.objects.select_related() ratings = list(ratings.film(film).filter(user__in=d.keys())) ratings = sorted(ratings, key=lambda r: d[r.user_id].score)[:N] logger.debug("%d of %d similar friends rated this film", len(ratings), N_SIMILAR) if len(ratings) < N: logger.debug("not enough results, executing full query") ratings = Rating.objects.select_related() ratings = ratings.film(film).similar_ratings(user)[0:N] logger.debug("similar ratings fetched") cache.set(key, ratings) link = film.get_absolute_url() link = str(link) + '?u=similar' return { 'film': film, 'title': _("Similar users ratings"), 'link': link, 'ratings': ratings, 'friends': False }
def film_actors(context, film, n=5): actors = cache_query(film.get_actors(), 'film_actors', film) return { 'film': film, 'perms': context.get('perms'), 'actors': actors, }
def film_actors(context, film, n=5): actors = cache_query(film.get_actors(), 'film_actors', film) return { 'film':film, 'perms':context.get('perms'), 'actors':actors, }
def film_featured_posts(context, film): activities = UserActivity.objects.public().filter(film=film.id, activity_type=UserActivity.TYPE_POST, featured=True)[0:2] activities = cache_query(activities, "film_featured_posts", film) return { 'film':film, 'activities':activities, }
def film_similar_ratings(request, film=None): user = request.user film = film or get_object_or_404(Film, id=request.GET.get('film_id')) ratings = () if user.is_authenticated(): key = cache.Key("film_similar_ratings", film, user) ratings = cache.get(key) if ratings is None: N_SIMILAR = 100 N = 5 query = User.objs.similar(user)[:N_SIMILAR] similar_users = cache_query(query, "similar_users", user) if similar_users: d = dict((u.id, u) for u in similar_users) ratings = Rating.objects.select_related() ratings = list(ratings.film(film).filter(user__in=d.keys())) ratings = sorted(ratings, key=lambda r:d[r.user_id].score)[:N] logger.debug("%d of %d similar friends rated this film", len(ratings), N_SIMILAR) if len(ratings)<N: logger.debug("not enough results, executing full query") ratings = Rating.objects.select_related() ratings = ratings.film(film).similar_ratings(user)[0:N] logger.debug("similar ratings fetched") cache.set(key, ratings) return { 'film':film, 'title':_("Similar users ratings"), 'ratings':ratings, 'friends': False }
def film_featured_posts(context, film): activities = UserActivity.objects.public().filter( film=film.id, activity_type=UserActivity.TYPE_POST, featured=True)[0:2] activities = cache_query(activities, "film_featured_posts", film) return { 'film': film, 'activities': activities, }
def film_related(context, film): NUMBER_RELATED = getattr(settings, 'NUMBER_OF_FILMS_RELATED', 6) related = cache_query(film.get_related_films()[:NUMBER_RELATED], "film_related_films", film) return { 'film': film, 'perms': context.get('perms'), 'related': related, }
def film_related(context, film): NUMBER_RELATED = getattr(settings, 'NUMBER_OF_FILMS_RELATED', 6) related = cache_query(film.get_related_films()[:NUMBER_RELATED], "film_related_films", film) return { 'film':film, 'perms':context.get('perms'), 'related':related, }
def film_friends_ratings(request, film=None): user = request.user film = film or get_object_or_404(Film, id=request.GET.get('film_id')) if user.is_authenticated(): ratings = cache_query(film.get_friends_ratings(user), "film_friends_ratings", film, user) else: ratings = () return { 'film':film, 'title':_("Friends ratings"), 'ratings':ratings, 'friends': True }
def film_friends_ratings(request, film=None): user = request.user film = film or get_object_or_404(Film, id=request.GET.get('film_id')) if user.is_authenticated(): ratings = cache_query(film.get_friends_ratings(user), "film_friends_ratings", film, user) else: ratings = () link = film.get_absolute_url() link = str(link) + '?u=friends' return { 'film':film, 'title':_("Friends ratings"), 'link':link, 'ratings':ratings, 'friends': True, 'user_rated': film.is_rated_by_user( user ) }
def film_friends_ratings(request, film=None): user = request.user film = film or get_object_or_404(Film, id=request.GET.get('film_id')) if user.is_authenticated(): ratings = cache_query(film.get_friends_ratings(user), "film_friends_ratings", film, user) else: ratings = () link = film.get_absolute_url() link = str(link) + '?u=friends' return { 'film': film, 'title': _("Friends ratings"), 'link': link, 'ratings': ratings, 'friends': True, 'user_rated': film.is_rated_by_user(user) }