mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-06-09 00:39:30 +00:00
Makes reports an activitypub model
This commit is contained in:
parent
addfee0607
commit
5b229fa362
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
57
bookwyrm/migrations/0192_auto_20240102_2156.py
Normal file
57
bookwyrm/migrations/0192_auto_20240102_2156.py
Normal 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,
|
||||
),
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue