diff --git a/pelican/generators.py b/pelican/generators.py index 08a20095..65fcb9c3 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -586,9 +586,10 @@ class ArticlesGenerator(CachingGenerator): ) 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: @@ -616,9 +617,10 @@ class ArticlesGenerator(CachingGenerator): ) 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: @@ -646,9 +648,10 @@ class ArticlesGenerator(CachingGenerator): ) 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 8023613c..ffb47cc6 100644 --- a/pelican/urlwrappers.py +++ b/pelican/urlwrappers.py @@ -42,11 +42,18 @@ class URLWrapper: 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 a5e08538..c17422aa 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -259,7 +259,7 @@ def slugify( 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'].