diff --git a/pelican/generators.py b/pelican/generators.py index c4c9300cb..ee1054505 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -576,9 +576,10 @@ def generate_tags(self, write): ) except RuntimeError: if not tag.slug: - logger.warning( + logger.info( 'Tag "%s" has an invalid slug; skipping writing tag page...', tag, + extra={"limit_msg": "Further tags with invalid slugs."}, ) continue else: @@ -606,9 +607,10 @@ def generate_categories(self, write): ) except RuntimeError: if not cat.slug: - logger.warning( + logger.info( 'Category "%s" has an invalid slug; skipping writing category page...', cat, + extra={"limit_msg": "Further categories with invalid slugs."}, ) continue else: @@ -636,9 +638,10 @@ def generate_authors(self, write): ) except RuntimeError: if not aut.slug: - logger.warning( + logger.info( 'Author "%s" has an invalid slug; skipping writing author page...', aut, + extra={"limit_msg": "Further authors with invalid slugs."}, ) continue else: diff --git a/pelican/urlwrappers.py b/pelican/urlwrappers.py index 6d705d4c1..7d823961c 100644 --- a/pelican/urlwrappers.py +++ b/pelican/urlwrappers.py @@ -42,11 +42,18 @@ def slug(self): preserve_case=preserve_case, use_unicode=self.settings.get("SLUGIFY_USE_UNICODE", False), ) + if not self._slug: + logger.warning( + 'Unable to generate valid slug for %s "%s".', + self.__class__.__name__, + self.name, + extra={"limit_msg": "Other invalid slugs."}, + ) return self._slug @slug.setter def slug(self, slug): - # if slug is expliticly set, changing name won't alter slug + # if slug is explicitly set, changing name won't alter slug self._slug_from_name = False self._slug = slug diff --git a/pelican/utils.py b/pelican/utils.py index eda53d3f5..73c197c1e 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -226,7 +226,7 @@ def slugify(value, regex_subs=(), preserve_case=False, use_unicode=False): Normalizes string, converts to lowercase, removes non-alpha characters, and converts spaces to hyphens. - Took from Django sources. + Taken from Django sources. For a set of sensible default regex substitutions to pass to regex_subs look into pelican.settings.DEFAULT_CONFIG['SLUG_REGEX_SUBSTITUTIONS'].