def collect_missing_options(options_dict): options_dict['secret_key'] = generate_random_key() if options_dict['database_engine'] == '2':#sqlite while True: value = console.simple_dialog( 'Please enter database file name' ) database_file_name = None if os.path.isfile(value): message = 'file %s exists, use it anyway?' % value if console.get_yes_or_no(message) == 'yes': database_file_name = value elif os.path.isdir(value): print '%s is a directory, choose another name' % value elif value in path_utils.FILES_TO_CREATE: print 'name %s cannot be used for the database name' % value elif value == path_utils.LOG_DIR_NAME: print 'name %s cannot be used for the database name' % value else: database_file_name = value if database_file_name: options_dict['database_name'] = database_file_name return options_dict else:#others for key in ('database_name', 'database_user', 'database_password'): if options_dict[key] is None: key_name = key.replace('_', ' ') value = console.simple_dialog( '\nPlease enter %s' % key_name, required=True ) options_dict[key] = value return options_dict
def prompt_for_date(self): """Prompt user for start and end dates in YYYY-MM-DD format for filtering imported objects by a date range of when they were created. :returns: (tuple) 2 datetime objects representing the start date and end date respectively to filter by. Either or both of the elements can also be None indicating no filter is required for that boundary. """ start_date = False end_date = False while not start_date: prompt = "Enter earliest date (yyyy-mm-dd) to import content from (leave blank for all):" start = console.simple_dialog(prompt, required=False).strip() if start: try: start_date = datetime.strptime(start,"%Y-%m-%d") except ValueError: print print "*** Please enter a date in the format YYYY-MM-DD or leave it blank ***" else: start_date = None break while not end_date: prompt = "Enter latest date (yyyy-mm-dd) to import content from (leave blank for all):" end = console.simple_dialog(prompt, required=False).strip() if end: try: end_date = datetime.strptime(end,"%Y-%m-%d") except ValueError: print print "*** Please enter a date in the format YYYY-MM-DD or leave it blank ***" else: end_date = None break return (start_date, end_date)
def collect_missing_options(options_dict): options_dict['secret_key'] = '' if options_dict['no_secret_key'] else generate_random_key() if options_dict['database_engine'] == '2':#sqlite if options_dict['database_name']: return options_dict while True: value = console.simple_dialog( 'Please enter database file name' ) database_file_name = None if os.path.isfile(value): message = 'file %s exists, use it anyway?' % value if console.get_yes_or_no(message) == 'yes': database_file_name = value elif os.path.isdir(value): print('%s is a directory, choose another name' % value) elif value in path_utils.FILES_TO_CREATE: print('name %s cannot be used for the database name' % value) elif value == path_utils.LOG_DIR_NAME: print('name %s cannot be used for the database name' % value) else: database_file_name = value if database_file_name: options_dict['database_name'] = database_file_name return options_dict else:#others db_keys = OrderedDict([ ('database_name', True), ('database_user', True), ('database_password', True), ('database_host', False), ('database_port', False) ]) for key, required in list(db_keys.items()): if options_dict[key] is None: key_name = key.replace('_', ' ') fmt_string = '\nPlease enter %s' if not required: fmt_string += ' (press "Enter" to use the default value)' value = console.simple_dialog( fmt_string % key_name, required=db_keys[key] ) options_dict[key] = value return options_dict
def collect_missing_options(options_dict): options_dict['secret_key'] = generate_random_key() if options_dict['database_engine'] == '2':#sqlite if options_dict['database_name']: return options_dict while True: value = console.simple_dialog( 'Please enter database file name' ) database_file_name = None if os.path.isfile(value): message = 'file %s exists, use it anyway?' % value if console.get_yes_or_no(message) == 'yes': database_file_name = value elif os.path.isdir(value): print('%s is a directory, choose another name' % value) elif value in path_utils.FILES_TO_CREATE: print('name %s cannot be used for the database name' % value) elif value == path_utils.LOG_DIR_NAME: print('name %s cannot be used for the database name' % value) else: database_file_name = value if database_file_name: options_dict['database_name'] = database_file_name return options_dict else:#others db_keys = OrderedDict([ ('database_name', True), ('database_user', True), ('database_password', True), ('database_host', False), ('database_port', False) ]) for key, required in db_keys.items(): if options_dict[key] is None: key_name = key.replace('_', ' ') fmt_string = '\nPlease enter %s' if not required: fmt_string += ' (press "Enter" to use the default value)' value = console.simple_dialog( fmt_string % key_name, required=db_keys[key] ) options_dict[key] = value return options_dict
def simple_dialog(self, prompt, required=False, default=None): """Simple dialog, if necessary - preceded by the preamble""" if not self.preamble_printed: self.print_preamble() self.preamble_printed = True return console.simple_dialog(prompt, required=required, default=default)
def prompt_for_tags(self): """Prompt user for a space-separated list of tags to filter imported objects by. Tags are case-insensitive for the import and everything is forced to lowercase. :returns: (list) tags specified by user """ prompt = "Enter tags separated by spaces to filter by (leave blank for all):" tags = console.simple_dialog(prompt, required=False) return tags.split()