### Navigation

- index
- modules |
- CCHR 1.0 documentation »
- Module code »
- src »

# Source code for src.cmd.new

    import os, sys
    from ..util import check_file, capture_input
    from ..configuration import config, db_info
    from ..run import run_new

    def new_project(cmd):
        """Creates a new project.

        @param args: The command line parameters.

        As listed under cchrrrd.py new_project -h the following command line
        parameters are accepted by new_project.

        name: The name of the project.

        project_dir: The path to the top level directory for the BJSConvert output.

        in_dir: The path to the directory containing the NLETS raw bar delimited
                segment files and the spss sample file *(required)*.

        meta_dir: The path to the directory containing the project metadata files.
                  Default: **root_dir**/bjs_rules/metadata.

        rule_dir: The path to the directory containing the project rules.
                  Default: **root_dir**/bjs_rules/rules.

        follow_period: The number of years after the date of release arrest
                       to include in the recidivism database and flat files.

        threads: The number of threads to use when running the recidivism
                 transform phase. Default: 250

        cores: The number of cores the system has available to use. Default: 4

        verbose: A debug option to set debug logging to verbose. Default: False

        host: Name of database host to connect to. Default: localhost.

        port: TCP port of MySQL server. Default: standard port (3306).

        db_stand_name: Name of standardized database. Default: **project name**

        db_stand_user: The user to authenticate as. Default: root.

        db_stand_pass: The password to authenticate with. Default: pass.

        db_recid_name: Name of recidivism database. Default: **project name**_recid

        db_recid_user: The user to authenticate as. Default: root.

        db_recid_pass: The password to authenticate with. Default: pass.

        """
        args = cmd.args
        #if no project name added ask user for the name
        if not args.name:
            while True:
                args.name = capture_input('Please enter the name of the project\n>>> ', **{'required':True})

                if os.path.isdir(os.path.join(args.project_dir, 'project_data', str(args.name))):
                    print 'Project already exists, try a different name.'
                else:
                    break

        if not args.follow_period:
            args.follow_period = capture_input('Please enter the number of years for the follow-up window\n>>> ', int_range=(0,99))

        #if no project directory argument supplied get from user
        if not args.project_dir:
            args.project_dir = os.path.join(config.root_dir)

        if not os.path.isdir(args.project_dir):
            os.makedirs(args.project_dir)

        _db_s = args.db_stand_name if args.db_stand_name else args.name
        _db_r = '%s_recid' % (args.db_stand_name if args.db_stand_name else args.name)

        for dir in (args.project_dir, args.in_dir,
                    args.metadata_dir, args.rule_dir):
            if dir:
                check_file(dir, as_dir = True)

        opt = {'name': args.name,
               'root_dir': args.project_dir,
               'in_dir': args.in_dir,
               'meta_dir': args.metadata_dir,
               'rule_dir': args.rule_dir,
               'threads': args.threads,
               'cores': args.cores,
               'verbose': args.verbose,
               'host': args.host,
               'port': args.port,
               'follow_period': args.follow_period,
               'db_stand_name': _db_s,
               'db_recid_name': _db_r,
              }

        run_new(**opt)

### Navigation

- index
- modules |
- CCHR 1.0 documentation »
- Module code »
- src »