Merge pull request #943 from bookwyrm-social/activity-serialize-errors

Activity serialize errors
This commit is contained in:
Mouse Reeve 2021-04-15 17:00:00 -07:00 committed by GitHub
commit f792dd0dac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 21 additions and 20 deletions

View file

@ -5,7 +5,7 @@ import sys
from .base_activity import ActivityEncoder, Signature, naive_parse
from .base_activity import Link, Mention
from .base_activity import ActivitySerializerError, resolve_remote_id
from .image import Image
from .image import Document
from .note import Note, GeneratedNote, Article, Comment, Quotation
from .note import Review, Rating
from .note import Tombstone

View file

@ -3,7 +3,7 @@ from dataclasses import dataclass, field
from typing import List
from .base_activity import ActivityObject
from .image import Image
from .image import Document
@dataclass(init=False)
@ -28,7 +28,7 @@ class Book(ActivityObject):
librarythingKey: str = ""
goodreadsKey: str = ""
cover: Image = None
cover: Document = None
type: str = "Book"

View file

@ -4,7 +4,7 @@ from .base_activity import ActivityObject
@dataclass(init=False)
class Image(ActivityObject):
class Document(ActivityObject):
""" image block """
url: str

View file

@ -4,7 +4,7 @@ from typing import Dict, List
from django.apps import apps
from .base_activity import ActivityObject, Link
from .image import Image
from .image import Document
@dataclass(init=False)
@ -32,7 +32,7 @@ class Note(ActivityObject):
inReplyTo: str = ""
summary: str = ""
tag: List[Link] = field(default_factory=lambda: [])
attachment: List[Image] = field(default_factory=lambda: [])
attachment: List[Document] = field(default_factory=lambda: [])
sensitive: bool = False
type: str = "Note"

View file

@ -3,7 +3,7 @@ from dataclasses import dataclass, field
from typing import Dict
from .base_activity import ActivityObject
from .image import Image
from .image import Document
@dataclass(init=False)
@ -28,7 +28,7 @@ class Person(ActivityObject):
endpoints: Dict = None
name: str = None
summary: str = None
icon: Image = field(default_factory=lambda: {})
icon: Document = field(default_factory=lambda: {})
bookwyrmUser: bool = False
manuallyApprovesFollowers: str = False
discoverable: str = False

View file

@ -1,4 +1,4 @@
""" undo wrapper activity """
""" activities that do things """
from dataclasses import dataclass, field
from typing import List
from django.apps import apps
@ -9,14 +9,13 @@ from .ordered_collection import CollectionItem
@dataclass(init=False)
class Verb(ActivityObject):
"""generic fields for activities - maybe an unecessary level of
abstraction but w/e"""
"""generic fields for activities """
actor: str
object: ActivityObject
def action(self):
""" usually we just want to save, this can be overridden as needed """
""" usually we just want to update and save """
self.object.to_model()
@ -24,8 +23,8 @@ class Verb(ActivityObject):
class Create(Verb):
""" Create activity """
to: List
cc: List
to: List[str]
cc: List[str] = field(default_factory=lambda: [])
signature: Signature = None
type: str = "Create"
@ -34,21 +33,23 @@ class Create(Verb):
class Delete(Verb):
""" Create activity """
to: List
cc: List
to: List[str]
cc: List[str] = field(default_factory=lambda: [])
type: str = "Delete"
def action(self):
""" find and delete the activity object """
obj = self.object.to_model(save=False, allow_create=False)
obj.delete()
if obj:
obj.delete()
# if we can't find it, we don't need to delete it because we don't have it
@dataclass(init=False)
class Update(Verb):
""" Update activity """
to: List
to: List[str]
type: str = "Update"
def action(self):

View file

@ -33,4 +33,4 @@ class Image(Attachment):
)
caption = fields.TextField(null=True, blank=True, activitypub_field="name")
activity_serializer = activitypub.Image
activity_serializer = activitypub.Document

View file

@ -336,7 +336,7 @@ def image_serializer(value, alt):
else:
return None
url = "https://%s%s" % (DOMAIN, url)
return activitypub.Image(url=url, name=alt)
return activitypub.Document(url=url, name=alt)
class ImageField(ActivitypubFieldMixin, models.ImageField):