Allow users to report spam links
This commit is contained in:
@ -11,9 +11,8 @@ from .admin.invite import ManageInvites, Invite, InviteRequest
|
||||
from .admin.invite import ManageInviteRequests, ignore_invite_request
|
||||
from .admin.link_domains import LinkDomain, update_domain_status
|
||||
from .admin.reports import (
|
||||
Report,
|
||||
Reports,
|
||||
make_report,
|
||||
ReportAdmin,
|
||||
ReportsAdmin,
|
||||
resolve_report,
|
||||
suspend_user,
|
||||
unsuspend_user,
|
||||
@ -97,6 +96,7 @@ from .notifications import Notifications
|
||||
from .outbox import Outbox
|
||||
from .reading import create_readthrough, delete_readthrough, delete_progressupdate
|
||||
from .reading import ReadingStatus
|
||||
from .report import Report
|
||||
from .rss_feed import RssFeed
|
||||
from .search import Search
|
||||
from .status import CreateStatus, EditStatus, DeleteStatus, update_progress
|
||||
|
@ -5,9 +5,8 @@ from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
from bookwyrm import emailing, forms, models
|
||||
from bookwyrm import forms, models
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
@ -20,7 +19,7 @@ from bookwyrm import emailing, forms, models
|
||||
permission_required("bookwyrm.moderate_post", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class Reports(View):
|
||||
class ReportsAdmin(View):
|
||||
"""list of reports"""
|
||||
|
||||
def get(self, request):
|
||||
@ -52,7 +51,7 @@ class Reports(View):
|
||||
permission_required("bookwyrm.moderate_post", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class Report(View):
|
||||
class ReportAdmin(View):
|
||||
"""view a specific report"""
|
||||
|
||||
def get(self, request, report_id):
|
||||
@ -132,16 +131,3 @@ def resolve_report(_, report_id):
|
||||
if not report.resolved:
|
||||
return redirect("settings-report", report.id)
|
||||
return redirect("settings-reports")
|
||||
|
||||
|
||||
@login_required
|
||||
@require_POST
|
||||
def make_report(request):
|
||||
"""a user reports something"""
|
||||
form = forms.ReportForm(request.POST)
|
||||
if not form.is_valid():
|
||||
raise ValueError(form.errors)
|
||||
|
||||
report = form.save()
|
||||
emailing.moderation_report_email(report)
|
||||
return redirect(request.headers.get("Referer", "/"))
|
||||
|
39
bookwyrm/views/report.py
Normal file
39
bookwyrm/views/report.py
Normal file
@ -0,0 +1,39 @@
|
||||
""" moderation via flagged posts and users """
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import emailing, forms, models
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class Report(View):
|
||||
"""Make reports"""
|
||||
|
||||
def get(self, request, user_id, status_id=None, link_id=None):
|
||||
"""static view of report modal"""
|
||||
data = {"user": get_object_or_404(models.User, id=user_id)}
|
||||
if status_id:
|
||||
data["status"] = status_id
|
||||
if link_id:
|
||||
data["link"] = get_object_or_404(models.Link, id=link_id)
|
||||
|
||||
return TemplateResponse(request, "report.html", data)
|
||||
|
||||
def post(self, request):
|
||||
"""a user reports something"""
|
||||
form = forms.ReportForm(request.POST)
|
||||
if not form.is_valid():
|
||||
raise ValueError(form.errors)
|
||||
|
||||
report = form.save()
|
||||
if report.links.exists():
|
||||
# revert the domain to pending
|
||||
domain = report.links.first().domain
|
||||
domain.status = "pending"
|
||||
domain.save()
|
||||
emailing.moderation_report_email(report)
|
||||
return redirect(request.headers.get("Referer", "/"))
|
Reference in New Issue
Block a user