Tombstome handling (#23)
* Better Delete handling * Tweak the tombstone support * More work on Tombstone handling
This commit is contained in:
@@ -24,6 +24,7 @@ from little_boxes import activitypub as ap
|
||||
from little_boxes import strtobool
|
||||
from little_boxes.activitypub import _to_list
|
||||
from little_boxes.backend import Backend
|
||||
from little_boxes.errors import ActivityGoneError
|
||||
from little_boxes.errors import Error
|
||||
from utils.media import Kind
|
||||
|
||||
@@ -150,6 +151,8 @@ class MicroblogPubBackend(Backend):
|
||||
iri = iri.replace("/activity", "")
|
||||
is_a_note = True
|
||||
data = DB.activities.find_one({"box": Box.OUTBOX.value, "remote_id": iri})
|
||||
if data and data["meta"]["deleted"]:
|
||||
raise ActivityGoneError(f"{iri} is gone")
|
||||
if data and is_a_note:
|
||||
return data["activity"]["object"]
|
||||
elif data:
|
||||
@@ -158,6 +161,8 @@ class MicroblogPubBackend(Backend):
|
||||
# Check if the activity is stored in the inbox
|
||||
data = DB.activities.find_one({"remote_id": iri})
|
||||
if data:
|
||||
if data["meta"]["deleted"]:
|
||||
raise ActivityGoneError(f"{iri} is gone")
|
||||
return data["activity"]
|
||||
|
||||
# Fetch the URL via HTTP
|
||||
@@ -305,6 +310,12 @@ class MicroblogPubBackend(Backend):
|
||||
).get_object()
|
||||
|
||||
logger.info(f"inbox_delete handle_replies obj={obj!r}")
|
||||
|
||||
# Fake a Undo so any related Like/Announce doesn't appear on the web UI
|
||||
DB.activities.update(
|
||||
{"meta.object.id": obj.id},
|
||||
{"$set": {"meta.undo": True, "meta.exta": "object deleted"}},
|
||||
)
|
||||
if obj:
|
||||
self._handle_replies_delete(as_actor, obj)
|
||||
|
||||
@@ -325,6 +336,11 @@ class MicroblogPubBackend(Backend):
|
||||
)["activity"]
|
||||
).get_object()
|
||||
|
||||
DB.activities.update(
|
||||
{"meta.object.id": obj.id},
|
||||
{"$set": {"meta.undo": True, "meta.exta": "object deleted"}},
|
||||
)
|
||||
|
||||
self._handle_replies_delete(as_actor, obj)
|
||||
|
||||
@ensure_it_is_me
|
||||
|
Reference in New Issue
Block a user