Beispiel #1
0
 def interactive_authors(self):
     self.mods['authors'].opt_list(short=True)
     self.authors = ltools.input_default(
         'Please list authors (comma separated)',
         self._authors,
         required=True,
         is_valid=self.mods['authors'].is_valid_list,
     )
Beispiel #2
0
 def interactive_categories(self):
     self.mods['categories'].opt_list(short=True)
     self.categories = ltools.input_default(
         'Please list categories (comma separated)',
         self._categories,
         required=True,
         is_valid=self.mods['categories'].is_valid_list,
     )
Beispiel #3
0
 def interactive_categories(self):
     self.mods['categories'].opt_list(short=True)
     self.categories = ltools.input_default(
         'Please list categories (comma separated)',
         self._categories,
         required=True,
         is_valid=self.mods['categories'].is_valid_list,
     )
Beispiel #4
0
 def interactive_authors(self):
     self.mods['authors'].opt_list(short=True)
     self.authors = ltools.input_default(
         'Please list authors (comma separated)',
         self._authors,
         required=True,
         is_valid=self.mods['authors'].is_valid_list,
     )
Beispiel #5
0
 def interactive_section(self):
     def is_valid(value):
         f = self.mod.cm.config.has_section
         return value == self.nickname or not f(value)
     old_nick = self.nickname
     self.nickname = ltools.input_default('Nickname', self.nickname,
                                          required=True, is_valid=is_valid)
     if self.nickname != old_nick:
         self.mod.cm.config.remove_section(old_nick)
Beispiel #6
0
 def interactive_slug(self):
     def is_valid(value):
         if value != ltools.slugify(value):
             print('This is not a valid slug.')
             return False
         return True
     default = self.slug or ltools.slugify(self.name)
     self.slug = ltools.input_default('Slug', default, required=True,
                                      is_valid=is_valid)
Beispiel #7
0
    def interactive_section(self):
        def is_valid(value):
            f = self.mod.cm.config.has_section
            return value == self.nickname or not f(value)

        old_nick = self.nickname
        self.nickname = ltools.input_default('Nickname',
                                             self.nickname,
                                             required=True,
                                             is_valid=is_valid)
        if self.nickname != old_nick:
            self.mod.cm.config.remove_section(old_nick)
Beispiel #8
0
 def _interactive_field(self, attr_name):
     def prompt_name(attr_name):
         return attr_name.replace('_', ' ').title()
     attr = getattr(self, attr_name)
     attr_class = getattr(type(self), attr_name, None)
     if isinstance(attr_class, BaseField):
         prompt = getattr(attr_class, 'verbose_name') or prompt_name(attr_name)
         tmp = 'interactive_' + attr_name + '_is_valid'
         kwargs = {
             'required': attr_class.required,
             'is_valid': getattr(self, tmp, None),
         }
         setattr(self, attr_name, ltools.input_default(prompt, attr, **kwargs))
     else:
         raise lpbm.exceptions.AttributeNotAFieldError(attr_name)
Beispiel #9
0
    def interactive_filename(self):
        def is_valid(value):
            if ltools.slugify(value) != value:
                print("This is not a valid slug ({}).".format(ltools.SLUG_CHARS_DISPLAY))
                return False
            path = os.path.join("articles", value + ".markdown")
            if os.path.exists(os.path.normpath(path)):
                print("Article with this filename already exists.")
                return False
            return True

        default = ltools.slugify(self.title)
        self.filename = ltools.input_default("Filename", default, required=True, is_valid=is_valid)

        # Several paths have to be reset.
        self.filename = os.path.join("articles", self.filename)
        self.path = os.path.normpath(self.filename + ".markdown")
        self.cm.filename = self._config_filename()
Beispiel #10
0
 def interactive_id(self):
     if self.id is None and self.__id is None:
         ids = [o.id for o in self.mod.all_objects]
         def is_valid(val):
             try:
                 val = int(val)
             except ValueError:
                 return False
             return val not in ids
         try:
             default = max(ids) + 1
         except ValueError:
             default = 0
         id = ltools.input_default('Id', default, required=True, is_valid=is_valid)
         if 'section' in self._interactive_fields:
             self.__id = id
         else:
             self.id = id
     elif self.__id is not None:
         self.id = self.__id
Beispiel #11
0
    def interactive_filename(self):
        def is_valid(value):
            if ltools.slugify(value) != value:
                print('This is not a valid slug ({}).'.format(
                    ltools.SLUG_CHARS_DISPLAY))
                return False
            path = os.path.join('articles', value + '.markdown')
            if os.path.exists(os.path.normpath(path)):
                print('Article with this filename already exists.')
                return False
            return True

        default = ltools.slugify(self.title)
        self.filename = ltools.input_default('Filename',
                                             default,
                                             required=True,
                                             is_valid=is_valid)

        # Several paths have to be reset.
        self.filename = os.path.join('articles', self.filename)
        self.path = os.path.normpath(self.filename + '.markdown')
        self.cm.filename = self._config_filename()