def can_subscribe_to_topic(self, topic, user):
        """ Given a topic, checks whether the user can add it to their subscription list. """
        # A user can subscribe to topics if they are authenticated and if they have the permission
        # to read the related forum. Of course a user can subscribe only if they have not already
        # subscribed to the considered topic.
        return (
            user.is_authenticated and
            not topic.has_subscriber(user) and
            self._perform_basic_permission_check(topic.forum, user, 'can_read_forum')
        )
Given a topic, checks whether the user can add it to their subscription list.