forked from github/pelican
Merge pull request #964 from nickzoic/master
Slugify {category} in URLs. Fixes #926
This commit is contained in:
commit
0de44cc844
2 changed files with 24 additions and 3 deletions
|
|
@ -141,14 +141,21 @@ class Content(object):
|
|||
"""Returns the URL, formatted with the proper values"""
|
||||
metadata = copy.copy(self.metadata)
|
||||
path = self.metadata.get('path', self.get_relative_source_path())
|
||||
default_category = self.settings['DEFAULT_CATEGORY']
|
||||
slug_substitutions = self.settings.get('SLUG_SUBSTITUTIONS', ())
|
||||
metadata.update({
|
||||
'path': path_to_url(path),
|
||||
'slug': getattr(self, 'slug', ''),
|
||||
'lang': getattr(self, 'lang', 'en'),
|
||||
'date': getattr(self, 'date', datetime.now()),
|
||||
'author': getattr(self, 'author', ''),
|
||||
'category': getattr(self, 'category',
|
||||
self.settings['DEFAULT_CATEGORY']),
|
||||
'author': slugify(
|
||||
getattr(self, 'author', ''),
|
||||
slug_substitutions
|
||||
),
|
||||
'category': slugify(
|
||||
getattr(self, 'category', default_category),
|
||||
slug_substitutions
|
||||
)
|
||||
})
|
||||
return metadata
|
||||
|
||||
|
|
|
|||
|
|
@ -191,6 +191,20 @@ class TestArticle(TestPage):
|
|||
custom_article = Article(**article_kwargs)
|
||||
self.assertEqual('custom', custom_article.template)
|
||||
|
||||
def test_slugify_category_author(self):
|
||||
settings = get_settings()
|
||||
settings['SLUG_SUBSTITUTIONS'] = [ ('C#', 'csharp') ]
|
||||
settings['ARTICLE_URL'] = '{author}/{category}/{slug}/'
|
||||
settings['ARTICLE_SAVE_AS'] = '{author}/{category}/{slug}/index.html'
|
||||
article_kwargs = self._copy_page_kwargs()
|
||||
article_kwargs['metadata']['author'] = "O'Brien"
|
||||
article_kwargs['metadata']['category'] = 'C# & stuff'
|
||||
article_kwargs['metadata']['title'] = 'fnord'
|
||||
article_kwargs['settings'] = settings
|
||||
article = Article(**article_kwargs)
|
||||
self.assertEqual(article.url, 'obrien/csharp-stuff/fnord/')
|
||||
self.assertEqual(article.save_as, 'obrien/csharp-stuff/fnord/index.html')
|
||||
|
||||
|
||||
class TestURLWrapper(unittest.TestCase):
|
||||
def test_comparisons(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue