예제 #1
0
    def Transform(self, client, member, callback):
        from episode import Episode
        from member import Member

        def _OnQueryMember(root_episode, sharer_member):
            assert Member.OWNED in sharer_member.labels, sharer_member

            logging.info('migrating share from user "%s" to user "%s" in episode "%s" in viewpoint "%s"' % \
                         (sharer_member.user_id, member.user_id, root_episode.episode_id,
                          root_episode.viewpoint_id))

            if Version._mutate_items:
                Episode._MigrateShare(client,
                                      root_episode,
                                      sharer_member=sharer_member,
                                      recipient_member=member,
                                      add_photo_ids=None,
                                      callback=partial(callback, member))
            else:
                callback(member)

        def _OnQueryEpisode(root_episode):
            Member.Query(client, root_episode.user_id, root_episode.episode_id,
                         None, partial(_OnQueryMember, root_episode))

        if member.sharing_user_id is None and Member.OWNED not in member.labels:
            assert list(member.labels) == [Member.SHARED], member
            Episode.Query(client, member.episode_id, None, _OnQueryEpisode)
        else:
            callback(member)