Exemple #1
0
 def recent_reviews(self):
     recent_reviews = cache.get_cache(CACHE_ACTIVITIES, KEY_RECENT)
     if not recent_reviews:
         recent_reviews = Post.objects.select_related('parent', 'user').filter(featured_note=False, is_published=True, status=Post.PUBLIC_STATUS)\
                                  .exclude(featured_note=True).order_by("-publish")[:settings.NUMBER_OF_REVIEWS_FRONT_PAGE]
         cache.set_cache(CACHE_ACTIVITIES, KEY_RECENT, recent_reviews)
     return recent_reviews
Exemple #2
0
 def recent_reviews(self):
     recent_reviews = cache.get_cache(CACHE_ACTIVITIES, KEY_RECENT)
     if not recent_reviews:
         recent_reviews = Post.objects.select_related('parent', 'user').filter(featured_note=False, is_published=True, status=Post.PUBLIC_STATUS)\
                                  .exclude(featured_note=True).order_by("-publish")[:settings.NUMBER_OF_REVIEWS_FRONT_PAGE]
         cache.set_cache(CACHE_ACTIVITIES, KEY_RECENT, recent_reviews)
     return recent_reviews
Exemple #3
0
 def featured_review(self):
     featured_review = cache.get_cache(CACHE_ACTIVITIES, KEY_FEATURED)
     if not featured_review:
         featured_reviews = Post.objects.select_related('parent', 'user').filter(featured_note=True, is_published=False, status=Post.PUBLIC_STATUS)\
                                    .exclude(is_published=True).order_by("-publish")[:1]
         if len(featured_reviews)!=0:
             featured_review = featured_reviews[0]
         cache.set_cache(CACHE_ACTIVITIES, KEY_FEATURED, featured_review)
     return featured_review
Exemple #4
0
 def featured_review(self):
     featured_review = cache.get_cache(CACHE_ACTIVITIES, KEY_FEATURED)
     if not featured_review:
         featured_reviews = Post.objects.select_related('parent', 'user').filter(featured_note=True, is_published=False, status=Post.PUBLIC_STATUS)\
                                    .exclude(is_published=True).order_by("-publish")[:1]
         if len(featured_reviews) != 0:
             featured_review = featured_reviews[0]
         cache.set_cache(CACHE_ACTIVITIES, KEY_FEATURED, featured_review)
     return featured_review
Exemple #5
0
 def get_recent_reviews(self):
     recent_reviews = Post.objects.recent_reviews()
     films = cache.get_cache(CACHE_ACTIVITIES, recent_reviews)
     if not films:
         films = []
         for review in recent_reviews:
             film = review.get_main_related_film()
             films.append(film)
         cache.set_cache(CACHE_ACTIVITIES, recent_reviews, films)
     return recent_reviews, films
Exemple #6
0
 def get_recent_reviews(self):
     recent_reviews = Post.objects.recent_reviews()
     films = cache.get_cache(CACHE_ACTIVITIES, recent_reviews)
     if not films:
         films = []
         for review in recent_reviews:
             film = review.get_main_related_film()
             films.append(film)
         cache.set_cache(CACHE_ACTIVITIES, recent_reviews, films)
     return recent_reviews, films
Exemple #7
0
    def get_featured_review(self):
        featured_review = Post.objects.featured_review()
        film = cache.get_cache(CACHE_ACTIVITIES, featured_review)
        if not film:
            try:
                film = featured_review.get_main_related_film()
                cache.set_cache(CACHE_ACTIVITIES, featured_review, film)
            except:
                film = []

        return featured_review, film
Exemple #8
0
    def get_featured_review(self):
        featured_review = Post.objects.featured_review()
        film = cache.get_cache(CACHE_ACTIVITIES, featured_review)
        if not film:
            try:
                film = featured_review.get_main_related_film()
                cache.set_cache(CACHE_ACTIVITIES, featured_review, film)
            except:
                film = []

        return featured_review, film
 def get_votes_for_character_in_game(self, the_game, the_character):
     """
         Retrieves a list of votes for the given character in the given game.
         Gets it from cache if present (cache is cleared when voting)
     """
     result = get_cache(CACHE_VOTES_FOR_CHARACTER_IN_GAME, "%s_%s" % (the_game.id, the_character.id))
     if result != None:
         return result
     game_votes = GameVote.objects.filter(game=the_game, character=the_character)
     set_cache(CACHE_VOTES_FOR_CHARACTER_IN_GAME, "%s_%s" % (the_game.id, the_character.id), game_votes)
     return game_votes
Exemple #10
0
def show_movies_slider_widget(limit=settings.NUMBER_OF_MOVIES_FOR_WIDGET):
    CACHE_RANDOM_FILMS = 'random_films_for_tag'
    CACHE_FILMS_FOR_TAG = 'films_for_tag'
    CACHE_LINKS_FOR_GENRE = 'links_for_genre'

    tags = Film.get_top_tags()
    key = 'tag'
    key += "_".join(str(tag.id) for tag in tags)

    films_for_tags = cache.get_cache(CACHE_FILMS_FOR_TAG, key)
    films_list = cache.get_cache(CACHE_RANDOM_FILMS, films_for_tags)
    if not films_list:
        films_list = []
        if not films_for_tags:
            films_for_tags = []
            for tag in tags:
                rh = RecomHelper()
                films = rh.get_films_for_tag(str(tag), order_by="-popularity")
                films = films.filter(image__isnull=False)
                films_for_tags.append(films[:100])
            cache.set_cache(CACHE_FILMS_FOR_TAG, key, films_for_tags)

        for films in films_for_tags:
            films = list(films)
            random.shuffle(films)
            films = films[:limit]
            films_list += films
        cache.set_cache(CACHE_RANDOM_FILMS, films_for_tags, films_list,
                        CACHE_HOUR)

    links_list = cache.get_cache(CACHE_LINKS_FOR_GENRE, key)
    if not links_list:
        links_list = []
        for tag in tags:
            links = reverse('movies_menu', args=(tag.name, ))
            links_list.append(links)
        cache.set_cache(CACHE_LINKS_FOR_GENRE, key, links_list)

    return {'films': films_list, 'tags': tags, 'links': links_list}
Exemple #11
0
def show_movies_slider_widget(limit=settings.NUMBER_OF_MOVIES_FOR_WIDGET):
    CACHE_RANDOM_FILMS = 'random_films_for_tag'
    CACHE_FILMS_FOR_TAG = 'films_for_tag'
    CACHE_LINKS_FOR_GENRE = 'links_for_genre'

    tags = Film.get_top_tags()
    key = 'tag'
    key += "_".join(str(tag.id) for tag in tags)

    films_for_tags = cache.get_cache(CACHE_FILMS_FOR_TAG, key)
    films_list = cache.get_cache(CACHE_RANDOM_FILMS, films_for_tags)
    if not films_list:
        films_list = []
        if not films_for_tags:
            films_for_tags = []
            for tag in tags:
                rh = RecomHelper()
                films = rh.get_films_for_tag(str(tag), order_by="-popularity")
                films = films.filter(image__isnull = False)
                films_for_tags.append(films[:100])
            cache.set_cache(CACHE_FILMS_FOR_TAG, key, films_for_tags)

        for films in films_for_tags:
            films = list(films)
            random.shuffle(films)
            films = films[:limit]
            films_list += films
        cache.set_cache(CACHE_RANDOM_FILMS, films_for_tags, films_list, CACHE_HOUR)

    links_list = cache.get_cache(CACHE_LINKS_FOR_GENRE, key)
    if not links_list:
        links_list = []
        for tag in tags:
            links = reverse('movies_menu', args=(tag.name,))
            links_list.append(links)
        cache.set_cache(CACHE_LINKS_FOR_GENRE, key, links_list)

    return {'films':films_list, 'tags': tags, 'links': links_list}
Exemple #12
0
 def get_votes_for_character_in_game(self, the_game, the_character):
     """
         Retrieves a list of votes for the given character in the given game.
         Gets it from cache if present (cache is cleared when voting)
     """
     result = get_cache(CACHE_VOTES_FOR_CHARACTER_IN_GAME,
                        "%s_%s" % (the_game.id, the_character.id))
     if result != None:
         return result
     game_votes = GameVote.objects.filter(
         game=the_game,
         character=the_character,
     )
     set_cache(CACHE_VOTES_FOR_CHARACTER_IN_GAME,
               "%s_%s" % (the_game.id, the_character.id), game_votes)
     return game_votes
Exemple #13
0
    def get_item_for_film(self, the_film):
        """
            Returns the shop item for given film or None if not set
        """
        the_item = get_cache(CACHE_SHOP_ITEM_FOR_FILM, the_film.id)
        if the_item is not None:
            logger.debug("got shop item from cache!")
            return the_item

        try:
            the_item = Item.objects.get(film=the_film)
        except Item.DoesNotExist:
            # everything is fine
            the_item = None

        # cache only if set
        if the_item is not None:
            set_cache(CACHE_SHOP_ITEM_FOR_FILM, the_item.film.id, the_item)
        return the_item
Exemple #14
0
    def get_item_for_film(self, the_film):
        """
            Returns the shop item for given film or None if not set
        """
        the_item = get_cache(CACHE_SHOP_ITEM_FOR_FILM, the_film.id)
        if the_item is not None:
            logger.debug("got shop item from cache!")
            return the_item

        try:
            the_item = Item.objects.get(
                film=the_film
                )
        except Item.DoesNotExist:
            # everything is fine
            the_item = None

        # cache only if set
        if the_item is not None:
            set_cache(CACHE_SHOP_ITEM_FOR_FILM, the_item.film.id, the_item)
        return the_item
Exemple #15
0
def short_reviews(context, limit=10, param=None, argument=None):
    """
        Configurable widget displaying short reviews
        Takes te following arguments:
        - list of films (can be none), param is "films" and argument is a
        list of film objects
        - film genre (can be none), param is genre and argument is a
        string with film genre
        - if both are none it displays recent last month hand-selected reviews
    """
    request = context['request']
    key = "short_reviews"
    key_params = "short_reviews_params"
    key_films = "films_for_tag"

    if param == "films":
        if argument:
            key += "_".join(film.permalink for film in argument
                            if film and film.pk)

    films = cache.get_cache(CACHE_ACTIVITIES, key_films)
    if param == 'genre':
        if not films:
            rh = RecomHelper()
            films = rh.get_films_for_tag(argument,
                                         limit=500,
                                         order_by="-popularity")
            key_films += "_".join(film.permalink for film in films
                                  if film and film.pk)
            cache.set_cache(CACHE_ACTIVITIES, key_films, films)

    # -- check if path contains tags --
    request_tags = request.GET.get("tags", "")
    request_path = request.META.get("PATH_INFO", "")

    if urls['TAG'] in request_path.lower():
        request_path = request_path.strip(urls['TAG'])
    else:
        request_path = ""

    if param == "genre":
        if request_tags:
            argument = request_tags
        if request_path:
            argument = request_path
        key += "_%s" % argument

    query = cache.get_cache(CACHE_ACTIVITIES, key)
    params = cache.get_cache(CACHE_ACTIVITIES, query)

    if not query:
        params = True
        if param == "films":
            query = UserActivity.objects.select_related(
                'user', 'film', 'short_review').filter(
                    activity_type=UserActivity.TYPE_SHORT_REVIEW,
                    film__in=argument,
                    #featured = True,
                ).order_by("-created_at")[:limit]

        if param == "genre":
            query = UserActivity.objects.select_related(
                'user', 'film', 'short_review').filter(
                    activity_type=UserActivity.TYPE_SHORT_REVIEW,
                    film__in=films,
                    #featured = True,
                ).order_by("-created_at")[:limit]

        if not query:
            params = False
            query = UserActivity.objects.select_related(
                'user', 'film', 'short_review').filter(
                    activity_type=UserActivity.TYPE_SHORT_REVIEW,
                    #featured = True,
                ).order_by("-created_at")[:limit]

        query = list(query)
        random.shuffle(query)
        cache.set_cache(CACHE_ACTIVITIES, key, query, CACHE_HOUR * 3)
        cache.set_cache(CACHE_ACTIVITIES, query, params, CACHE_HOUR * 3)

    return {'activities': query, 'params': params}
Exemple #16
0
def short_reviews(context, limit=10, param=None, argument=None):
    """
        Configurable widget displaying short reviews
        Takes te following arguments:
        - list of films (can be none), param is "films" and argument is a
        list of film objects
        - film genre (can be none), param is genre and argument is a
        string with film genre
        - if both are none it displays recent last month hand-selected reviews
    """
    request = context['request']
    key = "short_reviews"
    key_params = "short_reviews_params"
    key_films = "films_for_tag"

    if param == "films":
        if argument:
            key += "_".join(film.permalink for film in argument if film and film.pk)

    films = cache.get_cache(CACHE_ACTIVITIES, key_films)
    if param == 'genre':
        if not films:
            rh = RecomHelper()
            films = rh.get_films_for_tag(argument, limit=500, order_by="-popularity")
            key_films += "_".join(film.permalink for film in films if film and film.pk)
            cache.set_cache(CACHE_ACTIVITIES, key_films, films)


    # -- check if path contains tags --
    request_tags = request.GET.get("tags", "")
    request_path = request.META.get("PATH_INFO", "")

    if urls['TAG'] in request_path.lower():
        request_path = request_path.strip(urls['TAG'])
    else:
        request_path = ""

    if param == "genre":
        if request_tags:
            argument = request_tags
        if request_path:
            argument = request_path
        key += "_%s" % argument

    query = cache.get_cache(CACHE_ACTIVITIES, key)
    params = cache.get_cache(CACHE_ACTIVITIES, query)

    if not query:
        params = True
        if param == "films":
            query = UserActivity.objects.select_related('user', 'film', 'short_review').filter(
                activity_type = UserActivity.TYPE_SHORT_REVIEW,
                film__in = argument,
                #featured = True,
                ).order_by("-created_at")[:limit]

        if param == "genre":
            query = UserActivity.objects.select_related('user', 'film', 'short_review').filter(
                activity_type = UserActivity.TYPE_SHORT_REVIEW,
                film__in = films,
                #featured = True,
                ).order_by("-created_at")[:limit]

        if not query:
            params = False
            query = UserActivity.objects.select_related('user', 'film', 'short_review').filter(
                activity_type = UserActivity.TYPE_SHORT_REVIEW,
                #featured = True,
                ).order_by("-created_at")[:limit]

        query = list(query)
        random.shuffle(query)
        cache.set_cache(CACHE_ACTIVITIES, key, query, CACHE_HOUR * 3)
        cache.set_cache(CACHE_ACTIVITIES, query, params, CACHE_HOUR * 3)

    return {'activities': query, 'params': params}