def flag(request, comment_id, next=None): """ Flags a comment. Confirmation on GET, action on POST. Templates: :template:`comments/flag.html`, Context: comment the flagged `comments.comment` object """ comment = get_object_or_404(get_comment_model(), pk=comment_id, site__pk=settings.SITE_ID) if not has_app_model_option(comment)['allow_flagging']: ctype = ContentType.objects.get_for_model(comment.content_object) raise Http404("Comments posted to instances of '%s.%s' are not " "explicitly allowed to receive 'removal suggestion' " "flags. Check the COMMENTS_XTD_APP_MODEL_OPTIONS " "setting." % (ctype.app_label, ctype.model)) # Flag on POST if request.method == 'POST': perform_flag(request, comment) return next_redirect(request, fallback=next or 'comments-flag-done', c=comment.pk) # Render a form on GET else: return render(request, 'comments/flag.html', {'comment': comment, 'next': next})
def report(request, comment_id): """ Flags a comment on GET. Redirects to whatever is provided in request.REQUESRT['next']. """ comment = get_object_or_404( django_comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID) if comment.parent is not None: messages.info(request, _('Reporting comment replies is not allowed.')) else: perform_flag(request, comment) messages.info(request, _('The comment has been reported.')) next = request.GET.get('next') or comment.get_absolute_url() return HttpResponseRedirect(next)
def flag_ucomment(self, request, **kwargs): """ Flags a comment on POST request only using method from django_comments view (to bypass csrf protection) """ self.method_check(request, allowed=['post']) self.is_authenticated(request) self.throttle_check(request) # Flag on POST if request.method == 'POST': comment = get_object_or_404(Comment, pk=kwargs['comment_id'], site__pk=settings.SITE_ID) perform_flag(request, comment) # FIXME : basic email sending change_url = urlresolvers.reverse('admin:django_comments_comment_change', args=(comment.id,)) host = request.get_host() recipient_list = [manager_tuple[1] for manager_tuple in settings.MANAGERS] subject = '[%s] Un commentaire abusif signale ' % (get_current_site(request).name) message = "Un commentaire abusif a ete signale. Vous pouvez le moderer et le supprimer si besoin a cette adresse %s%s" % (host, change_url) send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, recipient_list, fail_silently=True) return HttpResponse("Comment flaged")
def perform_create(self, serializer): perform_flag(self.request, serializer.validated_data['comment'])