Improve follower/following management

This commit is contained in:
Thomas Sileo
2019-09-01 10:26:25 +02:00
parent fa1cc4cb4c
commit a49ba89a7e
6 changed files with 157 additions and 19 deletions

View File

@@ -33,6 +33,7 @@ from core.db import find_one_activity
from core.db import update_many_activities
from core.db import update_one_activity
from core.meta import Box
from core.meta import FollowStatus
from core.meta import MetaKey
from core.meta import by_object_id
from core.meta import by_remote_id
@@ -52,6 +53,16 @@ SIG_AUTH = HTTPSigAuth(KEY)
MY_PERSON = ap.Person(**ME)
_LOCAL_NETLOC = urlparse(BASE_URL).netloc
def is_from_outbox(activity: ap.BaseActivity) -> bool:
return activity.id.startswith(BASE_URL)
def is_local_url(url: str) -> bool:
return urlparse(url).netloc == _LOCAL_NETLOC
def _remove_id(doc: ap.ObjectType) -> ap.ObjectType:
"""Helper for removing MongoDB's `_id` field."""
@@ -116,6 +127,11 @@ def save(box: Box, activity: ap.BaseActivity) -> None:
actor_id = activity.get_actor().id
# Set some "type"-related neta
extra = {}
if box == Box.OUTBOX and activity.has_type(ap.Follow):
extra[MetaKey.FOLLOW_STATUS.value] = FollowStatus.WAITING.value
DB.activities.insert_one(
{
"box": box.value,
@@ -135,6 +151,7 @@ def save(box: Box, activity: ap.BaseActivity) -> None:
MetaKey.PUBLISHED.value: activity.published
if activity.published
else now(),
**extra,
},
}
)