Exemple #1
0
    def form_valid(self, form):

        if self.check_as and self.object.antispam(self.request.user):
            raise PermissionDenied

        if "preview" in self.request.POST:
            return self.form_invalid(form)

        is_new = False

        if self.reaction:  # it's an edition
            edit = CommentEdit()
            edit.comment = self.reaction
            edit.editor = self.request.user
            edit.original_text = self.reaction.text
            edit.save()

            self.reaction.update = datetime.now()
            self.reaction.editor = self.request.user
            self.reaction.hat = get_hat_from_request(self.request,
                                                     self.reaction.author)

        else:
            self.reaction = ContentReaction()
            self.reaction.pubdate = datetime.now()
            self.reaction.author = self.request.user
            self.reaction.position = self.object.get_note_count() + 1
            self.reaction.related_content = self.object
            self.reaction.hat = get_hat_from_request(self.request)

            is_new = True

        # also treat alerts if editor is a moderator
        if self.request.user != self.reaction.author and not is_new:
            alerts = Alert.objects.filter(comment__pk=self.reaction.pk,
                                          solved=False)
            for alert in alerts:
                alert.solve(self.request.user, _("Le message a été modéré."))

        self.reaction.update_content(
            form.cleaned_data["text"],
            on_error=lambda m: messages.error(
                self.request,
                _("Erreur du serveur Markdown: {}").format("\n- ".join(m))),
        )
        self.reaction.ip_address = get_client_ip(self.request)
        self.reaction.save()

        if is_new:  # we first need to save the reaction
            self.object.last_note = self.reaction
            self.object.save(update_date=False)

        self.success_url = self.reaction.get_absolute_url()
        return super().form_valid(form)
Exemple #2
0
    def perform_edit_post(request, post, user, text):
        original_text = post.text
        # create an archive
        edit = CommentEdit()
        edit.comment = post
        edit.editor = user
        edit.original_text = original_text
        edit.save()

        post.update_content(
            text,
            on_error=lambda m: messages.error(
                request,
                _("Erreur du serveur Markdown:\n{}").format("\n- ".join(m))),
        )
        post.hat = get_hat_from_request(request, post.author)
        post.update = datetime.now()
        post.editor = user
        post.save()

        # Save topic to update update_index_date
        if post.position == 1:
            post.topic.save()

        return post
Exemple #3
0
def send_post(
    request,
    topic,
    author,
    text,
):
    post = Post()
    post.topic = topic
    post.author = author
    post.pubdate = datetime.now()
    if topic.last_message is not None:
        post.position = topic.last_message.position + 1
    else:
        post.position = 1

    post.update_content(
        text,
        on_error=lambda m: messages.error(
            request,
            _('Erreur du serveur Markdown:\n{}').format('\n- '.join(m))))

    post.ip_address = get_client_ip(request)
    post.hat = get_hat_from_request(request)
    post.save()

    topic.last_message = post
    topic.save()
    return topic
Exemple #4
0
    def form_valid(self, form):
        self.perform_update(self.current_post,
                            self.request.POST,
                            hat=get_hat_from_request(self.request,
                                                     self.current_post.author))

        return redirect(self.current_post.get_absolute_url())
Exemple #5
0
 def form_valid(self, form):
     send_message_mp(self.request.user,
                     self.object,
                     form.data.get('text'),
                     True,
                     False,
                     hat=get_hat_from_request(self.request))
     return redirect(self.object.last_message.get_absolute_url())
Exemple #6
0
    def perform_edit_post(request, post, user, text):
        original_text = post.text
        # create an archive
        edit = CommentEdit()
        edit.comment = post
        edit.editor = user
        edit.original_text = original_text
        edit.save()

        post.update_content(
            text,
            on_error=lambda m: messages.error(
                request,
                _("Erreur du serveur Markdown:\n{}").format("\n- ".join(m))),
        )
        post.hat = get_hat_from_request(request, post.author)
        post.update = datetime.now()
        post.editor = user
        post.save()

        # Save topic to update update_index_date
        if post.position == 1:
            post.topic.save()

        # If this post is marked as potential spam, we open an alert to notify the staff that
        # the post was edited. If an open alert already exists for this reason, we update the
        # date of this alert to avoid lots of them stacking up.
        if original_text != text and post.is_potential_spam and post.editor == post.author:
            bot = get_object_or_404(
                User, username=settings.ZDS_APP["member"]["bot_account"])
            alert_text = _(
                "Ce message, soupçonné d'être un spam, a été modifié.")

            try:
                alert = post.alerts_on_this_comment.filter(
                    author=bot, text=alert_text, solved=False).latest()
                alert.pubdate = datetime.now()
                alert.save()
            except Alert.DoesNotExist:
                Alert(author=bot,
                      comment=post,
                      scope="FORUM",
                      text=alert_text,
                      pubdate=datetime.now()).save()

        return post
Exemple #7
0
def send_post(request, topic, author, text,):
    post = Post()
    post.topic = topic
    post.author = author
    post.pubdate = datetime.now()
    if topic.last_message is not None:
        post.position = topic.last_message.position + 1
    else:
        post.position = 1
    post.update_content(text)
    post.ip_address = get_client_ip(request)
    post.hat = get_hat_from_request(request)
    post.save()

    topic.last_message = post
    topic.save()
    return topic
Exemple #8
0
    def perform_edit_post(request, post, user, text):
        # create an archive
        edit = CommentEdit()
        edit.comment = post
        edit.editor = user
        edit.original_text = post.text
        edit.save()

        post.update_content(text)
        post.hat = get_hat_from_request(request, post.author)
        post.update = datetime.now()
        post.editor = user
        post.save()

        if post.position == 1:
            # Save topic to update update_index_date
            post.topic.save()
        return post
Exemple #9
0
    def form_valid(self, form):
        participants = []
        for participant in form.data['participants'].split(','):
            current = participant.strip()
            if not current:
                continue
            participants.append(get_object_or_404(User, username=current))

        p_topic = send_mp(self.request.user,
                          participants,
                          form.data['title'],
                          form.data['subtitle'],
                          form.data['text'],
                          True,
                          False,
                          hat=get_hat_from_request(self.request))

        return redirect(p_topic.get_absolute_url())
Exemple #10
0
    def form_valid(self, form):
        participants = []
        for participant in form.data['participants'].split(','):
            current = participant.strip()
            if not current:
                continue
            participants.append(get_object_or_404(User, username=current))

        p_topic = send_mp(self.request.user,
                          participants,
                          form.data['title'],
                          form.data['subtitle'],
                          form.data['text'],
                          True,
                          False,
                          hat=get_hat_from_request(self.request))

        return redirect(p_topic.get_absolute_url())
Exemple #11
0
    def form_valid(self, form):
        participants = []
        for participant in form.data["participants"].split(","):
            current = participant.strip()
            if not current:
                continue
            participants.append(get_object_or_404(User, username=current))

        p_topic = send_mp(
            self.request.user,
            participants,
            form.data["title"],
            form.data["subtitle"],
            form.data["text"],
            send_by_mail=True,
            leave=False,
            hat=get_hat_from_request(self.request),
        )

        return redirect(p_topic.get_absolute_url())
Exemple #12
0
    def perform_edit_post(request, post, user, text):
        # create an archive
        edit = CommentEdit()
        edit.comment = post
        edit.editor = user
        edit.original_text = post.text
        edit.save()

        post.update_content(
            text,
            on_error=lambda m: messages.error(
                request,
                _('Erreur du serveur Markdown:\n{}').format('\n- '.join(m))))
        post.hat = get_hat_from_request(request, post.author)
        post.update = datetime.now()
        post.editor = user
        post.save()

        if post.position == 1:
            # Save topic to update update_index_date
            post.topic.save()
        return post
Exemple #13
0
def send_post(request, topic, author, text,):
    post = Post()
    post.topic = topic
    post.author = author
    post.pubdate = datetime.now()
    if topic.last_message is not None:
        post.position = topic.last_message.position + 1
    else:
        post.position = 1

    post.update_content(
        text,
        on_error=lambda m: messages.error(
            request,
            _('Erreur du serveur Markdown:\n{}').format('\n- '.join(m))))

    post.ip_address = get_client_ip(request)
    post.hat = get_hat_from_request(request)
    post.save()

    topic.last_message = post
    topic.save()
    return topic
Exemple #14
0
    def form_valid(self, form):
        self.perform_update(self.current_post, self.request.POST,
                            hat=get_hat_from_request(self.request, self.current_post.author))

        return redirect(self.current_post.get_absolute_url())
Exemple #15
0
 def form_valid(self, form):
     send_message_mp(self.request.user, self.object, form.data.get('text'), True, False,
                     hat=get_hat_from_request(self.request))
     return redirect(self.object.last_message.get_absolute_url())