remove report model which is no longer in use
This commit is contained in:
parent
43907cb48d
commit
7ab1187b47
9 changed files with 1 additions and 237 deletions
|
@ -2,6 +2,5 @@ from django.contrib import admin
|
||||||
|
|
||||||
from .models import *
|
from .models import *
|
||||||
|
|
||||||
admin.site.register(Report)
|
|
||||||
admin.site.register(User)
|
admin.site.register(User)
|
||||||
admin.site.register(Preference)
|
admin.site.register(Preference)
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
from django import forms
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from common.forms import PreviewImageInput
|
|
||||||
|
|
||||||
from .models import Report
|
|
||||||
|
|
||||||
|
|
||||||
class ReportForm(forms.ModelForm):
|
|
||||||
class Meta:
|
|
||||||
model = Report
|
|
||||||
fields = [
|
|
||||||
"reported_user",
|
|
||||||
"image",
|
|
||||||
"message",
|
|
||||||
]
|
|
||||||
widgets = {
|
|
||||||
"message": forms.Textarea(attrs={"placeholder": _("详情")}),
|
|
||||||
"image": PreviewImageInput(),
|
|
||||||
"reported_user": forms.HiddenInput(),
|
|
||||||
}
|
|
||||||
labels = {"reported_user": _("投诉对象"), "image": _("相关证据"), "message": _("详情")}
|
|
|
@ -8,7 +8,6 @@ from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import users.models
|
import users.models
|
||||||
from users.models.report import report_image_path
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -177,47 +176,6 @@ class Migration(migrations.Migration):
|
||||||
("no_anonymous_view", models.PositiveSmallIntegerField(default=0)),
|
("no_anonymous_view", models.PositiveSmallIntegerField(default=0)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="Report",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.BigAutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"image",
|
|
||||||
models.ImageField(
|
|
||||||
blank=True, default="", upload_to=report_image_path
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("is_read", models.BooleanField(default=False)),
|
|
||||||
("submitted_time", models.DateTimeField(auto_now_add=True)),
|
|
||||||
("message", models.CharField(max_length=1000)),
|
|
||||||
(
|
|
||||||
"reported_user",
|
|
||||||
models.ForeignKey(
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
related_name="accused_reports",
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"submit_user",
|
|
||||||
models.ForeignKey(
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
related_name="sumbitted_reports",
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name="user",
|
model_name="user",
|
||||||
constraint=models.UniqueConstraint(
|
constraint=models.UniqueConstraint(
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
from .apidentity import APIdentity
|
from .apidentity import APIdentity
|
||||||
from .preference import Preference
|
from .preference import Preference
|
||||||
from .report import Report
|
|
||||||
from .task import Task
|
from .task import Task
|
||||||
from .user import User
|
from .user import User
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
from django.conf import settings
|
|
||||||
from django.db import models
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
from loguru import logger
|
|
||||||
|
|
||||||
from common.utils import GenerateDateUUIDMediaFilePath
|
|
||||||
from mastodon.api import *
|
|
||||||
|
|
||||||
from .user import User
|
|
||||||
|
|
||||||
|
|
||||||
def report_image_path(instance, filename):
|
|
||||||
return GenerateDateUUIDMediaFilePath(filename, settings.REPORT_MEDIA_PATH_ROOT)
|
|
||||||
|
|
||||||
|
|
||||||
class Report(models.Model):
|
|
||||||
submit_user = models.ForeignKey(
|
|
||||||
User, on_delete=models.SET_NULL, related_name="sumbitted_reports", null=True
|
|
||||||
)
|
|
||||||
reported_user = models.ForeignKey(
|
|
||||||
User, on_delete=models.SET_NULL, related_name="accused_reports", null=True
|
|
||||||
)
|
|
||||||
image = models.ImageField(
|
|
||||||
upload_to=report_image_path,
|
|
||||||
blank=True,
|
|
||||||
default="",
|
|
||||||
)
|
|
||||||
is_read = models.BooleanField(default=False)
|
|
||||||
submitted_time = models.DateTimeField(auto_now_add=True)
|
|
||||||
message = models.CharField(max_length=1000)
|
|
|
@ -1,33 +0,0 @@
|
||||||
{% load static %}
|
|
||||||
{% load i18n %}
|
|
||||||
{% load admin_url %}
|
|
||||||
{% load mastodon %}
|
|
||||||
{% load oauth_token %}
|
|
||||||
{% load truncate %}
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>{{ site_name }} - {% trans '管理投诉' %}</title>
|
|
||||||
{% include "common_libs.html" %}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{% include "_header.html" %}
|
|
||||||
<main class="container">
|
|
||||||
{% for report in reports %}
|
|
||||||
<article>
|
|
||||||
<header>
|
|
||||||
<a href="{{ report.submit_user.url }}">{{ report.submit_user.display_name }}</a>
|
|
||||||
{% trans '投诉了' %}
|
|
||||||
<a href="{{ report.reported_user.url }}">{{ report.reported_user.display_name }}</a>
|
|
||||||
@{{ report.submitted_time }}
|
|
||||||
</header>
|
|
||||||
<p>{{ report.message }}</p>
|
|
||||||
{% if report.image %}<img src="{{ report.image.url }}" alt="" style="max-height: 80vh;">{% endif %}
|
|
||||||
</article>
|
|
||||||
{% endfor %}
|
|
||||||
</main>
|
|
||||||
{% include "_footer.html" %}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,43 +0,0 @@
|
||||||
{% load static %}
|
|
||||||
{% load i18n %}
|
|
||||||
{% load admin_url %}
|
|
||||||
{% load mastodon %}
|
|
||||||
{% load oauth_token %}
|
|
||||||
{% load truncate %}
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>{{ site_name }} - {% trans '投诉用户' %}</title>
|
|
||||||
{% include "common_libs.html" %}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{% include "_header.html" %}
|
|
||||||
<div class="container">
|
|
||||||
<form action="{% url 'users:report' %}"
|
|
||||||
method="post"
|
|
||||||
enctype="multipart/form-data"
|
|
||||||
class="report-form">
|
|
||||||
{% csrf_token %}
|
|
||||||
{{ form }}
|
|
||||||
<input class="button" type="submit" value="{% trans '提交' %}">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
{% include "_footer.html" %}
|
|
||||||
<script>
|
|
||||||
// preview uploaded pic
|
|
||||||
$("input[type='file']").on("change", function () {
|
|
||||||
if (this.files && this.files[0]) {
|
|
||||||
var reader = new FileReader();
|
|
||||||
|
|
||||||
reader.onload = function (e) {
|
|
||||||
$('#previewImage').attr('src', e.target.result);
|
|
||||||
}
|
|
||||||
|
|
||||||
reader.readAsDataURL(this.files[0]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -51,8 +51,6 @@ urlpatterns = [
|
||||||
path("unmute/<str:user_name>", unmute, name="unmute"),
|
path("unmute/<str:user_name>", unmute, name="unmute"),
|
||||||
path("block/<str:user_name>", block, name="block"),
|
path("block/<str:user_name>", block, name="block"),
|
||||||
path("unblock/<str:user_name>", unblock, name="unblock"),
|
path("unblock/<str:user_name>", unblock, name="unblock"),
|
||||||
path("report", report, name="report"),
|
|
||||||
path("manage_report", manage_report, name="manage_report"),
|
|
||||||
path(
|
path(
|
||||||
"mark_announcements_read/",
|
"mark_announcements_read/",
|
||||||
mark_announcements_read,
|
mark_announcements_read,
|
||||||
|
|
|
@ -20,8 +20,7 @@ from takahe.utils import Takahe
|
||||||
|
|
||||||
from .account import *
|
from .account import *
|
||||||
from .data import *
|
from .data import *
|
||||||
from .forms import ReportForm
|
from .models import APIdentity, Preference, User
|
||||||
from .models import APIdentity, Preference, Report, User
|
|
||||||
from .profile import account_info, account_profile
|
from .profile import account_info, account_profile
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,67 +215,6 @@ def set_layout(request: AuthedHttpRequest):
|
||||||
raise BadRequest()
|
raise BadRequest()
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
|
||||||
def report(request: AuthedHttpRequest):
|
|
||||||
if request.method == "GET":
|
|
||||||
user_id = request.GET.get("user_id")
|
|
||||||
if user_id:
|
|
||||||
user = get_object_or_404(User, pk=user_id)
|
|
||||||
form = ReportForm(initial={"reported_user": user})
|
|
||||||
else:
|
|
||||||
form = ReportForm()
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"users/report.html",
|
|
||||||
{
|
|
||||||
"form": form,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
elif request.method == "POST":
|
|
||||||
form = ReportForm(request.POST, request.FILES)
|
|
||||||
if form.is_valid():
|
|
||||||
form.instance.is_read = False
|
|
||||||
form.instance.submit_user = request.user
|
|
||||||
form.save()
|
|
||||||
dw = settings.DISCORD_WEBHOOKS.get("user-report")
|
|
||||||
if dw:
|
|
||||||
webhook = SyncWebhook.from_url(dw)
|
|
||||||
webhook.send(
|
|
||||||
f"New report from {request.user} about {form.instance.reported_user} : {form.instance.message}"
|
|
||||||
)
|
|
||||||
return redirect(reverse("common:home"))
|
|
||||||
else:
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"users/report.html",
|
|
||||||
{
|
|
||||||
"form": form,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
raise BadRequest()
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
|
||||||
def manage_report(request: AuthedHttpRequest):
|
|
||||||
if not request.user.is_staff:
|
|
||||||
raise PermissionDenied()
|
|
||||||
if request.method == "GET":
|
|
||||||
reports = Report.objects.all()
|
|
||||||
for r in reports.filter(is_read=False):
|
|
||||||
r.is_read = True
|
|
||||||
r.save()
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"users/manage_report.html",
|
|
||||||
{
|
|
||||||
"reports": reports,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
raise BadRequest()
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def mark_announcements_read(request: AuthedHttpRequest):
|
def mark_announcements_read(request: AuthedHttpRequest):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
|
Loading…
Add table
Reference in a new issue