diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 170bdfb9..791502d0 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -75,7 +75,7 @@ class ActivityObject: for field in fields(self): try: value = kwargs[field.name] - if value in (None, MISSING): + if value in (None, MISSING, {}): raise KeyError() try: is_subclass = issubclass(field.type, ActivityObject) diff --git a/bookwyrm/activitypub/person.py b/bookwyrm/activitypub/person.py index ba86b036..f1298b92 100644 --- a/bookwyrm/activitypub/person.py +++ b/bookwyrm/activitypub/person.py @@ -24,7 +24,7 @@ class Person(ActivityObject): outbox: str followers: str publicKey: PublicKey - endpoints: Dict + endpoints: Dict = None name: str = None summary: str = None icon: Image = field(default_factory=lambda: {}) diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 1ca0b377..1bdc6c45 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -73,7 +73,7 @@ class ActivitypubFieldMixin: raise value = getattr(data, "actor") formatted = self.field_from_activity(value) - if formatted is None or formatted is MISSING: + if formatted is None or formatted is MISSING or formatted == {}: return setattr(instance, self.name, formatted) @@ -101,7 +101,7 @@ class ActivitypubFieldMixin: def field_from_activity(self, value): """ formatter to convert activitypub into a model value """ - if hasattr(self, "activitypub_wrapper"): + if value and hasattr(self, "activitypub_wrapper"): value = value.get(self.activitypub_wrapper) return value