#!/usr/bin/env python
"""
Renames a session from the command line (if there has been a mistake in its
name for example).

    $ xnat-rename MMA003_001_MR01 MMA003_001_MRPT01
"""
import argparse
import logging
from xnatutils import (
    rename, __version__, print_response_error, print_usage_error,
    print_info_message)
from xnatutils.exceptions import XnatUtilsUsageError, XnatUtilsException
from xnat.exceptions import XNATResponseError

logger = logging.getLogger('xnat-utils')
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)


DATATYPES = ('project', 'subject', 'session', 'scan')

parser = argparse.ArgumentParser(description=__doc__,
                                 formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('session_name', type=str,
                    help=("Name of the session to rename"))
parser.add_argument('new_session_name', type=str,
                    help=("The new name of the session"))
parser.add_argument('--user', '-u', type=str, default=None,
                    help=("The user to connect to MBI-XNAT with"))
parser.add_argument('--version', '-V', action='version',
                    version='%(prog)s ' + __version__)
parser.add_argument('--server', '-s', type=str, default=None,
                    help=("The XNAT server to connect to. If not "
                          "provided the first server found in the "
                          "~/.netrc file will be used, and if it is "
                          "empty the user will be prompted to enter an "
                          "address for the server. Multiple URLs "
                          "stored in the ~/.netrc file can be "
                          "distinguished by passing part of the URL"))
parser.add_argument('--no_netrc', '-n', action='store_true',
                    default=False,
                    help=("Don't use or store user access tokens in "
                          "~/.netrc. Useful if using a public account"))
args = parser.parse_args()

try:
    rename(args.session_name, args.new_session_name,
           user=args.user, server=args.server,
           use_netrc=(not args.no_netrc))
except XnatUtilsUsageError as e:
    print_usage_error(e)
except XNATResponseError as e:
    print_response_error(e)
except XnatUtilsException as e:
    print_info_message(e)
    
        
 