'Store the new activity and then fanout to user followers
This function will
- store the activity in the activity storage
- store it in the user feed (list of activities for one user)
- fanout for all feed_classes
:param user_id: the id of the user
:param activity: the activity which to add'

def add_user_activity(self, user_id, activity):

    self.user_feed_class.insert_activity(activity)
    user_feed = self.get_user_feed(user_id)
    user_feed.add(activity)
    operation_kwargs = dict(activities=[activity], trim=True)
    for (priority_group, follower_ids) in self.get_user_follower_ids(user_id=user_id).items():
        for feed_class in self.feed_classes.values():
            self.create_fanout_tasks(follower_ids, feed_class, add_operation, operation_kwargs=operation_kwargs, fanout_priority=priority_group)
    self.metrics.on_activity_published()
