From 0622690688510df50110c46e05ec2c03fa249882 Mon Sep 17 00:00:00 2001 From: Dakota Benjamin Date: Thu, 9 Feb 2017 18:57:24 -0500 Subject: [PATCH] Add string validation for projectname Former-commit-id: ad443beb5b65171ee5dbc780d6f70773b99220b3 --- opendm/config.py | 11 +++++++++++ run.py | 11 ++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/opendm/config.py b/opendm/config.py index b1c1bb4d..3edb5b95 100644 --- a/opendm/config.py +++ b/opendm/config.py @@ -11,6 +11,12 @@ with open(context.settings_path) as stream: datamap = yaml.safe_load(stream) defaultSettings = datamap['settings'] +def alphanumeric_string(string): + import re + if re.match('^[a-zA-Z0-9]+$', str) is None: + msg = '{0} is not a valid name. Must use alphanumeric characters.'.format(string) + raise argparse.ArgumentTypeError(msg) + return string class RerunFrom(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): @@ -30,6 +36,11 @@ def config(): help='Path to the project to process', default=defaultSettings[0]['project_path']) + parser.add_argument('name', + metavar='', + type=alphanumeric_string, + help='Name of Project (i.e subdirectory of projects folder)') + parser.add_argument('--resize-to', # currently doesn't support 'orig' metavar='', default=2400, diff --git a/run.py b/run.py index d118d5da..af9c1d40 100644 --- a/run.py +++ b/run.py @@ -13,7 +13,8 @@ from scripts.odm_app import ODMApp def usage(): - log.ODM_ERROR('USAGE: %s --project-path [project_path]' % sys.argv[0]) + log.ODM_ERROR('You must specify a project name:') + log.ODM_ERROR('USAGE: %s [project name]' % sys.argv[0]) log.ODM_ERROR('OpenDroneMap app finished - %s' % system.now()) sys.exit(0) @@ -24,11 +25,15 @@ if __name__ == '__main__': args = config.config() + # Check that args.name is a valid string + + proj_dir = io.join_paths(args.project_path, args.name) + # Force to provide the images path if args.project_path is None: usage() - elif not io.dir_exists(args.project_path): - log.ODM_WARNING('Directory %s does not exist. Creating it now.' % args.project_path) + if not io.dir_exists(args.name): + log.ODM_WARNING('Directory %s does not exist. Creating it now.' % args.name) system.mkdir_p(os.path.abspath(args.project_path)) #If user asks to rerun everything, delete all of the existing progress directories.