Makes reports an activitypub model

This commit is contained in:
Mouse Reeve 2024-01-02 13:57:19 -08:00
parent addfee0607
commit 5b229fa362
4 changed files with 86 additions and 7 deletions

View file

@ -24,6 +24,7 @@ from .verbs import Follow, Accept, Reject, Block
from .verbs import Add, Remove
from .verbs import Announce, Like
from .verbs import Move
from .verbs import Flag
# this creates a list of all the Activity types that we can serialize,
# so when an Activity comes in from outside, we can check if it's known

View file

@ -268,3 +268,13 @@ class Move(Verb):
else:
# we might do something with this to move other objects at some point
pass
@dataclass(init=False)
class Flag(Verb):
"""Report a user to their home server"""
to: str
object: List[str] = None
links: List[str] = None
type: str = "Flag"

View file

@ -0,0 +1,57 @@
# Generated by Django 3.2.23 on 2024-01-02 21:56
import bookwyrm.models.fields
from django.conf import settings
from django.db import migrations
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0191_merge_20240102_0326"),
]
operations = [
migrations.AlterField(
model_name="report",
name="links",
field=bookwyrm.models.fields.ManyToManyField(
blank=True, to="bookwyrm.Link"
),
),
migrations.AlterField(
model_name="report",
name="note",
field=bookwyrm.models.fields.TextField(blank=True, null=True),
),
migrations.AlterField(
model_name="report",
name="reporter",
field=bookwyrm.models.fields.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
related_name="reporter",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AlterField(
model_name="report",
name="status",
field=bookwyrm.models.fields.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="bookwyrm.status",
),
),
migrations.AlterField(
model_name="report",
name="user",
field=bookwyrm.models.fields.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to=settings.AUTH_USER_MODEL,
),
),
]

View file

@ -3,8 +3,11 @@ from django.core.exceptions import PermissionDenied
from django.db import models
from django.utils.translation import gettext_lazy as _
from bookwyrm import activitypub
from bookwyrm.settings import DOMAIN
from .activitypub_mixin import ActivityMixin
from .base_model import BookWyrmModel
from . import fields
# Report action enums
@ -22,21 +25,29 @@ APPROVE_DOMAIN = "approve_domain"
DELETE_ITEM = "delete_item"
class Report(BookWyrmModel):
class Report(ActivityMixin, BookWyrmModel):
"""reported status or user"""
reporter = models.ForeignKey(
"User", related_name="reporter", on_delete=models.PROTECT
activity_serializer = activitypub.Flag
reporter = fields.ForeignKey(
"User",
related_name="reporter",
on_delete=models.PROTECT,
activitypub_field="actor",
)
note = models.TextField(null=True, blank=True)
user = models.ForeignKey("User", on_delete=models.PROTECT, null=True, blank=True)
status = models.ForeignKey(
note = fields.TextField(null=True, blank=True, activitypub_field="content")
user = fields.ForeignKey(
"User", on_delete=models.PROTECT, null=True, blank=True, activitypub_field="to"
)
status = fields.ForeignKey(
"Status",
null=True,
blank=True,
on_delete=models.PROTECT,
activitypub_field="object",
)
links = models.ManyToManyField("Link", blank=True)
links = fields.ManyToManyField("Link", blank=True)
resolved = models.BooleanField(default=False)
def raise_not_editable(self, viewer):