Esempio n. 1
0
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
Esempio n. 2
0
    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)
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
 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)
Esempio n. 6
0
    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()