Beispiel #1
0
def error_banned(request, user=None, ban=None):
    if not ban:
        ban = request.ban
    if request.is_ajax():
        return json_response(request, status=403, message=_("You are banned."))
    response = request.theme.render_to_response('error403_banned.html',
                                                {
                                                 'banned_user': user,
                                                 'ban': ban,
                                                 'hide_signin': True,
                                                 'exception_response': True,
                                                 },
                                                context_instance=RequestContext(request));
    response.status_code = 403
    return response
Beispiel #2
0
def error_view(request, error, message=None):
    if message:
        message = unicode(message)
    if request.is_ajax():
        if not message:
            if error == 404:
                message = _("Requested page could not be loaded.")
            if error == 403:
                message = _("You don't have permission to see requested page.")
        return json_response(request, status=error, message=message)
    response = request.theme.render_to_response(('error%s.html' % error),
                                                {
                                                 'message': message,
                                                 'hide_signin': True,
                                                 'exception_response': True,
                                                 },
                                                context_instance=RequestContext(request));
    response.status_code = error
    return response
Beispiel #3
0
 def view(request):
     if self.post.user_id == request.user.id:
         return error404(request)
     self.check_acl(request)
     try:
         vote = Karma.objects.get(user=request.user, post=self.post)
         if self.thread.start_post_id == self.post.pk:
             if vote.score > 0:
                 self.thread.upvotes -= 1
             else:
                 self.thread.downvotes -= 1
         if vote.score > 0:
             self.post.upvotes -= 1
             request.user.karma_given_p -= 1
             if self.post.user_id:
                 self.post.user.karma_p -= 1
         else:
             self.post.downvotes -= 1
             request.user.karma_given_n -= 1
             if self.post.user_id:
                 self.post.user.karma_n -= 1
     except Karma.DoesNotExist:
         vote = Karma()
     vote.forum = self.forum
     vote.thread = self.thread
     vote.post = self.post
     vote.user = request.user
     vote.user_name = request.user.username
     vote.user_slug = request.user.username_slug
     vote.date = timezone.now()
     vote.ip = request.session.get_ip(request)
     vote.agent = request.META.get('HTTP_USER_AGENT')
     self.make_vote(request, vote)
     if vote.pk:
         vote.save(force_update=True)
     else:
         vote.save(force_insert=True)
     if self.thread.start_post_id == self.post.pk:
         if vote.score > 0:
             self.thread.upvotes += 1
         else:
             self.thread.downvotes += 1
         self.thread.save(force_update=True)
     if vote.score > 0:
         self.post.upvotes += 1
         request.user.karma_given_p += 1
         if self.post.user_id:
             self.post.user.karma_p += 1
             self.post.user.score += request.settings['score_reward_karma_positive']
     else:
         self.post.downvotes += 1
         request.user.karma_given_n += 1
         if self.post.user_id:
             self.post.user.karma_n += 1
             self.post.user.score -= request.settings['score_reward_karma_negative']
     self.post.save(force_update=True)
     request.user.save(force_update=True)
     if self.post.user_id:
         self.post.user.save(force_update=True)
     if request.is_ajax():
         return json_response(request, {
                                        'score_total': self.post.upvotes - self.post.downvotes,
                                        'score_upvotes': self.post.upvotes,
                                        'score_downvotes': self.post.downvotes,
                                        'user_vote': vote.score,
                                       })
     request.messages.set_flash(Message(_('Your vote has been saved.')), 'success', 'threads_%s' % self.post.pk)
     return self.redirect_to_post(self.post)
Beispiel #4
0
        def view(request):
            report = None
            made_report = False
            if self.post.reported:
                report = self.post.live_report()

                if report and report.start_poster_id != request.user.pk:
                    # Append our q.q to existing report?
                    try:
                        report.checkpoint_set.get(user=request.user,
                                                  action="reported")
                    except Checkpoint.DoesNotExist:
                        report.set_checkpoint(self.request, 'reported', user)
                    made_report = True

            if not report:
                # File up new report
                now = timezone.now()

                reason_post = _('''
Member @%(reporter)s has reported following post by @%(reported)s:

%(quote)s
**Post link:** <%(post)s>
''')

                reason_post = reason_post.strip() % {
                    'reporter':
                    request.user.username,
                    'reported':
                    self.post.user_name,
                    'post':
                    settings.BOARD_ADDRESS +
                    self.redirect_to_post(self.post)['Location'],
                    'quote':
                    self.post.quote(),
                }

                md, reason_post_preparsed = post_markdown(reason_post)

                reports = Forum.objects.special_model('reports')
                report = Thread.objects.create(
                    forum=reports,
                    weight=2,
                    name=self.thread.name,
                    slug=slugify(self.thread.slug),
                    start=now,
                    start_poster=request.user,
                    start_poster_name=request.user.username,
                    start_poster_slug=request.user.username_slug,
                    start_poster_style=request.user.rank.style,
                    last=now,
                    last_poster=request.user,
                    last_poster_name=request.user.username,
                    last_poster_slug=request.user.username_slug,
                    last_poster_style=request.user.rank.style,
                    report_for=self.post,
                )

                reason = Post.objects.create(
                    forum=reports,
                    thread=report,
                    user=request.user,
                    user_name=request.user.username,
                    ip=request.session.get_ip(self.request),
                    agent=request.META.get('HTTP_USER_AGENT'),
                    post=reason_post,
                    post_preparsed=reason_post_preparsed,
                    date=now,
                )

                report.start_post = reason
                report.last_post = reason
                report.save(force_update=True)

                for m in self.post.mentions.all():
                    reason.mentions.add(m)

                self.post.reported = True
                self.post.save(force_update=True)
                self.thread.replies_reported += 1
                self.thread.save(force_update=True)
                request.monitor.increase('reported_posts')
                made_report = True

            if made_report:
                if request.is_ajax():
                    return json_response(
                        request,
                        message=
                        _("Selected post has been reported and will receive moderator attention. Thank you."
                          ))
                self.request.messages.set_flash(
                    Message(
                        _("Selected post has been reported and will receive moderator attention. Thank you."
                          )), 'info', 'threads_%s' % self.post.pk)
            else:
                if request.is_ajax():
                    return json_response(
                        request,
                        message=
                        _("You have already reported this post. One of moderators will handle it as soon as it is possible. Thank you for your patience."
                          ))
                self.request.messages.set_flash(
                    Message(
                        _("You have already reported this post. One of moderators will handle it as soon as it is possible. Thank you for your patience."
                          )), 'info', 'threads_%s' % self.post.pk)

            return self.redirect_to_post(self.post)
Beispiel #5
0
 def view(request):
     if self.post.user_id == request.user.id:
         return error404(request)
     self.check_acl(request)
     try:
         vote = Karma.objects.get(user=request.user, post=self.post)
         if self.thread.start_post_id == self.post.pk:
             if vote.score > 0:
                 self.thread.upvotes -= 1
             else:
                 self.thread.downvotes -= 1
         if vote.score > 0:
             self.post.upvotes -= 1
             request.user.karma_given_p -= 1
             if self.post.user_id:
                 self.post.user.karma_p -= 1
         else:
             self.post.downvotes -= 1
             request.user.karma_given_n -= 1
             if self.post.user_id:
                 self.post.user.karma_n -= 1
     except Karma.DoesNotExist:
         vote = Karma()
     vote.forum = self.forum
     vote.thread = self.thread
     vote.post = self.post
     vote.user = request.user
     vote.user_name = request.user.username
     vote.user_slug = request.user.username_slug
     vote.date = timezone.now()
     vote.ip = request.session.get_ip(request)
     vote.agent = request.META.get('HTTP_USER_AGENT')
     self.make_vote(request, vote)
     if vote.pk:
         vote.save(force_update=True)
     else:
         vote.save(force_insert=True)
     if self.thread.start_post_id == self.post.pk:
         if vote.score > 0:
             self.thread.upvotes += 1
         else:
             self.thread.downvotes += 1
         self.thread.save(force_update=True)
     if vote.score > 0:
         self.post.upvotes += 1
         request.user.karma_given_p += 1
         if self.post.user_id:
             self.post.user.karma_p += 1
             self.post.user.score += request.settings[
                 'score_reward_karma_positive']
     else:
         self.post.downvotes += 1
         request.user.karma_given_n += 1
         if self.post.user_id:
             self.post.user.karma_n += 1
             self.post.user.score -= request.settings[
                 'score_reward_karma_negative']
     self.post.save(force_update=True)
     request.user.save(force_update=True)
     if self.post.user_id:
         self.post.user.save(force_update=True)
     if request.is_ajax():
         return json_response(
             request, {
                 'score_total': self.post.upvotes - self.post.downvotes,
                 'score_upvotes': self.post.upvotes,
                 'score_downvotes': self.post.downvotes,
                 'user_vote': vote.score,
             })
     request.messages.set_flash(Message(_('Your vote has been saved.')),
                                'success', 'threads_%s' % self.post.pk)
     return self.redirect_to_post(self.post)
Beispiel #6
0
        def view(request):
            report = None
            made_report = False
            if self.post.reported:
                report = self.post.live_report()

                if report and report.start_poster_id != request.user.pk:
                    # Append our q.q to existing report?
                    try:
                        report.checkpoint_set.get(user=request.user, action="reported")
                    except Checkpoint.DoesNotExist:
                        report.set_checkpoint(self.request, "reported", user)
                    made_report = True

            if not report:
                # File up new report
                now = timezone.now()

                reason_post = _(
                    """
Member @%(reporter)s has reported following post by @%(reported)s:

%(quote)s
**Post link:** <%(post)s>
"""
                )

                reason_post = reason_post.strip() % {
                    "reporter": request.user.username,
                    "reported": self.post.user_name,
                    "post": settings.BOARD_ADDRESS + self.redirect_to_post(self.post)["Location"],
                    "quote": self.post.quote(),
                }

                md, reason_post_preparsed = post_markdown(reason_post)

                reports = Forum.objects.special_model("reports")
                report = Thread.objects.create(
                    forum=reports,
                    weight=2,
                    name=self.thread.name,
                    slug=slugify(self.thread.slug),
                    start=now,
                    start_poster=request.user,
                    start_poster_name=request.user.username,
                    start_poster_slug=request.user.username_slug,
                    start_poster_style=request.user.rank.style,
                    last=now,
                    last_poster=request.user,
                    last_poster_name=request.user.username,
                    last_poster_slug=request.user.username_slug,
                    last_poster_style=request.user.rank.style,
                    report_for=self.post,
                )

                reason = Post.objects.create(
                    forum=reports,
                    thread=report,
                    user=request.user,
                    user_name=request.user.username,
                    ip=request.session.get_ip(self.request),
                    agent=request.META.get("HTTP_USER_AGENT"),
                    post=reason_post,
                    post_preparsed=reason_post_preparsed,
                    date=now,
                )

                report.start_post = reason
                report.last_post = reason
                report.save(force_update=True)

                for m in self.post.mentions.all():
                    reason.mentions.add(m)

                self.post.reported = True
                self.post.save(force_update=True)
                self.thread.replies_reported += 1
                self.thread.save(force_update=True)
                request.monitor.increase("reported_posts")
                made_report = True

            if made_report:
                if request.is_ajax():
                    return json_response(
                        request,
                        message=_("Selected post has been reported and will receive moderator attention. Thank you."),
                    )
                self.request.messages.set_flash(
                    Message(_("Selected post has been reported and will receive moderator attention. Thank you.")),
                    "info",
                    "threads_%s" % self.post.pk,
                )
            else:
                if request.is_ajax():
                    return json_response(
                        request,
                        message=_(
                            "You have already reported this post. One of moderators will handle it as soon as it is possible. Thank you for your patience."
                        ),
                    )
                self.request.messages.set_flash(
                    Message(
                        _(
                            "You have already reported this post. One of moderators will handle it as soon as it is possible. Thank you for your patience."
                        )
                    ),
                    "info",
                    "threads_%s" % self.post.pk,
                )

            return self.redirect_to_post(self.post)
Beispiel #7
0
 def view(request):
     if self.post.user_id == request.user.id:
         return error404(request)
     self.check_acl(request)
     user = User.objects.block_user(request.user)
     try:
         vote = Karma.objects.get(user=request.user, post=self.post)
         if self.thread.start_post_id == self.post.pk:
             if vote.score > 0:
                 self.thread.upvotes -= 1
             else:
                 self.thread.downvotes -= 1
         if vote.score > 0:
             self.post.upvotes -= 1
             user.karma_given_p -= 1
             if self.post.user_id:
                 self.post.user.karma_p -= 1
         else:
             self.post.downvotes -= 1
             user.karma_given_n -= 1
             if self.post.user_id:
                 self.post.user.karma_n -= 1
     except Karma.DoesNotExist:
         vote = Karma()
         vote.forum = self.forum
         vote.thread = self.thread
         vote.post = self.post
         vote.user = request.user
         vote.user_name = request.user.username
         vote.user_slug = request.user.username_slug
         vote.date = timezone.now()
         vote.ip = request.session.get_ip(request)
         vote.agent = request.META.get("HTTP_USER_AGENT")
     self.make_vote(request, vote)
     vote.save()
     if self.thread.start_post_id == self.post.pk:
         if vote.score > 0:
             self.thread.upvotes += 1
         else:
             self.thread.downvotes += 1
         self.thread.save(force_update=True)
     if vote.score > 0:
         self.post.upvotes += 1
         user.karma_given_p += 1
         if self.post.user_id:
             self.post.user.karma_p += 1
             self.post.user.score += settings.score_reward_karma_positive
     else:
         self.post.downvotes += 1
         user.karma_given_n += 1
         if self.post.user_id:
             self.post.user.karma_n += 1
             self.post.user.score -= settings.score_reward_karma_negative
     self.post.save(force_update=True)
     user.last_vote = timezone.now()
     if self.post.user_id:
         self.post.user.save(force_update=True)
     user.save(force_update=True)
     if request.is_ajax():
         return json_response(
             request,
             {
                 "score_total": self.post.upvotes - self.post.downvotes,
                 "score_upvotes": self.post.upvotes,
                 "score_downvotes": self.post.downvotes,
                 "user_vote": vote.score,
             },
         )
     messages.success(request, _("Your vote has been saved."), "threads_%s" % self.post.pk)
     return self.redirect_to_post(self.post)