Esempio n. 1
0
 def outbox_undo_like(self, as_actor: ap.Person, like: ap.Like) -> None:
     obj = like.get_object()
     DB.activities.update_one(
         {"activity.object.id": obj.id},
         {"$inc": {"meta.count_like": -1}, "$set": {"meta.liked": False}},
     )
     DB.activities.update_one({"remote_id": like.id}, {"$set": {"meta.undo": True}})
Esempio n. 2
0
 def inbox_like(self, as_actor: ap.Person, like: ap.Like) -> None:
     obj = like.get_object()
     # Update the meta counter if the object is published by the server
     DB.activities.update_one(
         {"box": Box.OUTBOX.value, "activity.object.id": obj.id},
         {"$inc": {"meta.count_like": 1}},
     )
Esempio n. 3
0
def _like_process_inbox(like: ap.Like, new_meta: _NewMeta) -> None:
    _logger.info(f"process_inbox activity={like!r}")
    obj = like.get_object()
    # Update the meta counter if the object is published by the server
    update_one_activity(
        {
            **by_type(ap.ActivityType.CREATE),
            **by_object_id(obj.id)
        },
        inc(MetaKey.COUNT_LIKE, 1),
    )
Esempio n. 4
0
 def outbox_like(self, as_actor: ap.Person, like: ap.Like) -> None:
     obj = like.get_object()
     DB.activities.update_one(
         {"activity.object.id": obj.id},
         {
             "$inc": {
                 "meta.count_like": 1
             },
             "$set": {
                 "meta.liked": like.id
             }
         },
     )
Esempio n. 5
0
def _like_set_inbox_flags(activity: ap.Like, new_meta: _NewMeta) -> None:
    _logger.info(f"set_inbox_flags activity={activity!r}")
    # Is it a Like of local acitivty/from the outbox
    if is_from_outbox(activity.get_object()):
        # Flag it as a notification
        _flag_as_notification(activity, new_meta)

        # Cache the object (for display on the notifcation page)
        Tasks.cache_object(activity.id)

        # Also set the "keep mark" for the GC (as we want to keep it forever)
        _set_flag(new_meta, MetaKey.GC_KEEP)

    return None
Esempio n. 6
0
def _like_process_outbox(like: ap.Like, new_meta: _NewMeta) -> None:
    _logger.info(f"process_outbox activity={like!r}")

    obj = like.get_object()
    if obj.has_type(ap.ActivityType.QUESTION):
        Tasks.fetch_remote_question(obj)

    # Cache the object for display on the "Liked" public page
    Tasks.cache_object(like.id)

    update_one_activity(
        {**by_object_id(obj.id), **by_type(ap.ActivityType.CREATE)},
        {**inc(MetaKey.COUNT_LIKE, 1), **upsert({MetaKey.LIKED: like.id})},
    )