Пример #1
0
    def get_queryset(self):
        if not perms.may_view_topic(self.request.user, self.topic):
            raise PermissionDenied
        if self.request.user.is_authenticated() or not defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER:
            Topic.objects.filter(id=self.topic.id).update(views=F('views') + 1)
        else:
            cache_key = util.build_cache_key('anonymous_topic_views', topic_id=self.topic.id)
            cache.add(cache_key, 0)
            if cache.incr(cache_key) % defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER == 0:
                Topic.objects.filter(id=self.topic.id).update(views=F('views') +
                                                                    defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER)
                cache.set(cache_key, 0)
        qs = self.topic.posts.all().select_related('user')
        if defaults.PYBB_PROFILE_RELATED_NAME:
            if defaults.PYBB_POST_SORT_REVERSE:
                qs = qs.select_related('user__%s' % defaults.PYBB_PROFILE_RELATED_NAME).order_by('-created')
            else:
                qs = qs.select_related('user__%s' % defaults.PYBB_PROFILE_RELATED_NAME)

        if not perms.may_moderate_topic(self.request.user, self.topic):
            if defaults.PYBB_POST_SORT_REVERSE:
                qs = perms.filter_posts(self.request.user, qs).order_by('-created')
            else:
                qs = perms.filter_posts(self.request.user, qs)
        return qs
Пример #2
0
 def get_queryset(self):
     if not perms.may_view_topic(self.request.user, self.topic):
         raise PermissionDenied
     if self.request.user.is_authenticated() or not defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER:
         Topic.objects.filter(id=self.topic.id).update(views=F('views') + 1)
     else:
         cache_key = util.build_cache_key('anonymous_topic_views', topic_id=self.topic.id)
         cache.add(cache_key, 0)
         if cache.incr(cache_key) % defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER == 0:
             Topic.objects.filter(id=self.topic.id).update(views=F('views') +
                                                             defaults.PYBB_ANONYMOUS_VIEWS_CACHE_BUFFER)
             cache.set(cache_key, 0)
     qs = self.topic.posts.all().select_related('user')
     if defaults.PYBB_PROFILE_RELATED_NAME:
         qs = qs.select_related('user__%s' % defaults.PYBB_PROFILE_RELATED_NAME)
     if not perms.may_moderate_topic(self.request.user, self.topic):
         qs = perms.filter_posts(self.request.user, qs)
     return qs
Пример #3
0
def pybbm_calc_topic_views(topic):
    cache_key = util.build_cache_key('anonymous_topic_views',
                                     topic_id=topic.id)
    return topic.views + cache.get(cache_key, 0)
Пример #4
0
def pybbm_calc_topic_views(topic):
    cache_key = build_cache_key('anonymous_topic_views', topic_id=topic.id)
    return topic.views + cache.get(cache_key, 0)