Example #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
Example #2
0
File: views.py Project: lnroma/aor
def move_post_processing(request):
    if not request.method == 'POST':
        raise PermissionDenied

    field_list = ('move_from_topic', 'move_to_topic', 'move_post_list')
    if not all(field in request.POST for field in field_list):
        # FIXME print "select at least one post"
        return redirect(request.META['HTTP_REFERER'])

    move_from_topic = request.POST.get('move_from_topic')
    move_to_topic = request.POST.get('move_to_topic')
    move_post_list = list(set(request.POST.getlist('move_post_list')))

    old_topic = Topic.objects.get(pk=move_from_topic)
    new_topic = Topic.objects.get(pk=move_to_topic)

    if (not perms.may_moderate_topic(request.user, old_topic)
            or not perms.may_moderate_topic(request.user, new_topic)):
        raise PermissionDenied

    # filter by topic for prevent access violations
    post_qs = Post.objects.filter(topic=move_from_topic, pk__in=move_post_list)
    post_qs = perms.filter_posts(request.user, post_qs)
    post_qs.update(topic=move_to_topic)

    old_topic.update_counters()
    new_topic.update_counters()

    first_moved_post = Post.objects.get(pk=min(move_post_list))

    # FIXME print "success"
    return redirect(first_moved_post.get_absolute_url())
Example #3
0
 def items(self, user):
     ids = [
         p.id for p in perms.filter_posts(user, Post.objects.only(
             'id')).order_by('-created', '-id')[:15]
     ]
     return Post.objects.filter(id__in=ids).select_related(
         'topic', 'topic__forum', 'user')
Example #4
0
def move_post_processing(request):
    if not request.method == 'POST':
        raise PermissionDenied

    field_list = ('move_from_topic', 'move_to_topic', 'move_post_list')
    if not all(field in request.POST for field in field_list):
        # FIXME print "select at least one post"
        return redirect(request.META['HTTP_REFERER'])

    move_from_topic = request.POST.get('move_from_topic')
    move_to_topic = request.POST.get('move_to_topic')
    move_post_list = list(set(request.POST.getlist('move_post_list')))

    old_topic = Topic.objects.get(pk=move_from_topic)
    new_topic = Topic.objects.get(pk=move_to_topic)

    if (not perms.may_moderate_topic(request.user, old_topic) or
            not perms.may_moderate_topic(request.user, new_topic)):
        raise PermissionDenied

    # filter by topic for prevent access violations
    post_qs = Post.objects.filter(topic=move_from_topic, pk__in=move_post_list)
    post_qs = perms.filter_posts(request.user, post_qs)
    post_qs.update(topic=move_to_topic)

    old_topic.update_counters()
    new_topic.update_counters()

    first_moved_post = Post.objects.get(pk=min(move_post_list))

    # FIXME print "success"
    return redirect(first_moved_post.get_absolute_url())
Example #5
0
 def get_queryset(self):
     self.topic = get_object_or_404(perms.filter_topics(self.request.user, Topic.objects.select_related('forum')), pk=self.kwargs['pk'])
     self.topic.views += 1
     self.topic.save()
     qs = self.topic.posts.all().select_related('user')
     if not perms.may_moderate_topic(self.request.user, self.topic):
         qs = perms.filter_posts(self.request.user, qs)
     return qs
Example #6
0
    def get_queryset(self):
        if not perms.may_view_topic(self.request.user, self.topic):
            raise PermissionDenied

        self.topic.views += 1
        self.topic.save()
        qs = self.topic.posts.all().select_related('user')
        if not perms.may_moderate_topic(self.request.user, self.topic):
            qs = perms.filter_posts(self.request.user, qs)
        return qs
Example #7
0
    def get_queryset(self):
        if not perms.may_view_topic(self.request.user, self.topic):
            raise PermissionDenied

        self.topic.views += 1
        self.topic.save()
        qs = self.topic.posts.all().select_related('user')
        if not perms.may_moderate_topic(self.request.user, self.topic):
            qs = perms.filter_posts(self.request.user, qs)
        return qs
Example #8
0
File: views.py Project: atas3/pybbm
    def get_queryset(self):
        if not perms.may_view_topic(self.request.user, self.topic):
            raise PermissionDenied

        self.topic.views += 1
        self.topic.save()
        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
Example #9
0
    def get_queryset(self):
        if not perms.may_view_topic(self.request.user, self.topic):
            raise PermissionDenied

        self.topic.views += 1
        self.topic.save()
        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
Example #10
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
Example #11
0
 def get_queryset(self):
     qs = super(UserPosts, self).get_queryset()
     qs = qs.filter(user=self.user)
     qs = perms.filter_posts(self.request.user, qs).select_related('topic')
     qs = qs.order_by('-created', '-updated')
     return qs
Example #12
0
File: views.py Project: JTLX/pybbm
 def get_queryset(self):
     qs = super(UserPosts, self).get_queryset()
     qs = qs.filter(user=self.user)
     qs = perms.filter_posts(self.request.user, qs).select_related("topic")
     qs = qs.order_by("-created", "-updated", "-id")
     return qs
Example #13
0
def pybb_get_latest_posts(context, cnt=5, user=None):
    qs = Post.objects.all().order_by('-created')
    if not user:
        user = context['user']
    qs = perms.filter_posts(user, qs)
    return qs[:cnt]
Example #14
0
def pybb_get_latest_posts(context, cnt=5, user=None):
    qs = Post.objects.all().order_by('-created')
    if not user:
        user = context['user']
    qs = perms.filter_posts(user, qs)
    return qs[:cnt]
Example #15
0
 def items(self, user):
     ids = [p.id for p in perms.filter_posts(user, Post.objects.only('id')).order_by('-created', '-id')[:15]]
     return Post.objects.filter(id__in=ids).select_related('topic', 'topic__forum', 'user')
Example #16
0
 def get_queryset(self):
     qs = super(UserPosts, self).get_queryset()
     qs = qs.filter(user=self.user)
     qs = perms.filter_posts(self.request.user, qs).select_related('topic')
     qs = qs.order_by('-created', '-updated')
     return qs
Example #17
0
 def get_redirect_url(self, **kwargs):
     post = get_object_or_404(perms.filter_posts(self.request.user, Post.objects.all()), pk=self.kwargs['pk'])
     count = post.topic.posts.filter(created__lt=post.created).count() + 1
     page = math.ceil(count / float(defaults.PYBB_TOPIC_PAGE_SIZE))
     return '%s?page=%d#post-%d' % (reverse('pybb:topic', args=[post.topic.id]), page, post.id)