summaryrefslogtreecommitdiffstats
path: root/users/models/identity.py
diff options
context:
space:
mode:
authorAndrew Godwin2022-11-20 12:32:49 -0700
committerAndrew Godwin2022-11-20 12:32:49 -0700
commitf491fdb56e2de9200e14b855b5576009ca99dfa5 (patch)
tree5389fa8e3fef60ba1c7284087eba0d5616d222b3 /users/models/identity.py
parent77643a4fe144cb908a372a2ceb99f36634457ca5 (diff)
downloadtakahe-f491fdb56e2de9200e14b855b5576009ca99dfa5.tar.gz
takahe-f491fdb56e2de9200e14b855b5576009ca99dfa5.tar.bz2
takahe-f491fdb56e2de9200e14b855b5576009ca99dfa5.zip
Actor delete, sentry async, faster stator
Diffstat (limited to 'users/models/identity.py')
-rw-r--r--users/models/identity.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/users/models/identity.py b/users/models/identity.py
index a78a451..c26762d 100644
--- a/users/models/identity.py
+++ b/users/models/identity.py
@@ -12,6 +12,7 @@ from django.template.defaultfilters import linebreaks_filter
from django.templatetags.static import static
from django.utils import timezone
+from core.exceptions import ActorMismatchError
from core.html import sanitize_post
from core.ld import canonicalise, media_type_from_filename
from core.uploads import upload_namer
@@ -261,6 +262,24 @@ class Identity(StatorModel):
except cls.DoesNotExist:
pass
+ @classmethod
+ def handle_delete_ap(cls, data):
+ """
+ Takes an incoming update.person message and just forces us to add it
+ to our fetch queue (don't want to bother with two load paths right now)
+ """
+ # Assert that the actor matches the object
+ if data["actor"] != data["object"]:
+ raise ActorMismatchError(
+ f"Actor {data['actor']} trying to delete identity {data['object']}"
+ )
+ # Find by actor
+ try:
+ actor = cls.by_actor_uri(data["actor"])
+ actor.delete()
+ except cls.DoesNotExist:
+ pass
+
### Actor/Webfinger fetching ###
@classmethod