def METHOD_NAME(self):
    """Instantiate and return the list of permissions that this view requires."""
    if self.action == "metadata":
        permission_classes = [permissions.UserOrPlaylistIsAuthenticated]
    elif self.action in ["create", "list"]:
        permission_classes = [
            permissions.IsTokenInstructor
            | permissions.IsTokenAdmin
            | permissions.IsParamsVideoAdminOrInstructorThroughPlaylist
            | permissions.IsParamsVideoAdminThroughOrganization
        ]
    elif self.action in ["retrieve", "destroy", "initiate_upload"]:
        permission_classes = [
            permissions.IsPlaylistTokenMatchingRouteObject
            & (permissions.IsTokenInstructor | permissions.IsTokenAdmin)
            | permissions.IsRelatedVideoPlaylistAdminOrInstructor
            | permissions.IsRelatedVideoOrganizationAdmin
        ]
    elif self.action is None:
        if self.request.method not in self.allowed_methods:
            raise MethodNotAllowed(self.request.method)
        permission_classes = self.permission_classes
    else:
        # When here it means we forgot to define a permission for a new action
        # We enforce the permission definition in this method to have a clearer view
        raise NotImplementedError(f"Action '{self.action}' is not implemented.")
    return [permission() for permission in permission_classes]