forked from github/pelican
Add settings to change the URL's and SAVE_AS paths
Example usage:
* ARTICLE_URL = 'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/'
* ARTICLE_SAVE_AS = 'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/index.html'
This removes CLEAN_URLS and ARTICLE_PERMALINK_STRUCTURE because these
new settings can produce the same result.
This commit is contained in:
parent
ff9c786149
commit
a39787c1a2
4 changed files with 82 additions and 60 deletions
|
|
@ -24,6 +24,7 @@ class Page(object):
|
|||
if not settings:
|
||||
settings = _DEFAULT_CONFIG
|
||||
|
||||
self.settings = settings
|
||||
self._content = content
|
||||
self.translations = []
|
||||
|
||||
|
|
@ -55,29 +56,6 @@ class Page(object):
|
|||
if not hasattr(self, 'slug') and hasattr(self, 'title'):
|
||||
self.slug = slugify(self.title)
|
||||
|
||||
# create save_as from the slug (+lang)
|
||||
if not hasattr(self, 'save_as') and hasattr(self, 'slug'):
|
||||
if self.in_default_lang:
|
||||
if settings.get('CLEAN_URLS', False):
|
||||
self.save_as = '%s/index.html' % self.slug
|
||||
else:
|
||||
self.save_as = '%s.html' % self.slug
|
||||
|
||||
clean_url = '%s/' % self.slug
|
||||
else:
|
||||
if settings.get('CLEAN_URLS', False):
|
||||
self.save_as = '%s-%s/index.html' % (self.slug, self.lang)
|
||||
else:
|
||||
self.save_as = '%s-%s.html' % (self.slug, self.lang)
|
||||
|
||||
clean_url = '%s-%s/' % (self.slug, self.lang)
|
||||
|
||||
# change the save_as regarding the settings
|
||||
if settings.get('CLEAN_URLS', False):
|
||||
self.url = clean_url
|
||||
elif hasattr(self, 'save_as'):
|
||||
self.url = self.save_as
|
||||
|
||||
if filename:
|
||||
self.filename = filename
|
||||
|
||||
|
|
@ -115,6 +93,30 @@ class Page(object):
|
|||
if not hasattr(self, prop):
|
||||
raise NameError(prop)
|
||||
|
||||
@property
|
||||
def url_format(self):
|
||||
return {
|
||||
'slug': getattr(self, 'slug', ''),
|
||||
'lang': getattr(self, 'lang', 'en'),
|
||||
'date': getattr(self, 'date', datetime.now()),
|
||||
'author': self.author,
|
||||
'category': getattr(self, 'category', 'misc'),
|
||||
}
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings.get('PAGE_URL', 'pages/{slug}.html').format(**self.url_format)
|
||||
|
||||
return self.settings.get('PAGE_LANG_URL', 'pages/{slug}-{lang}.html').format(**self.url_format)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings.get('PAGE_SAVE_AS', 'pages/{slug}.html').format(**self.url_format)
|
||||
|
||||
return self.settings.get('PAGE_LANG_SAVE_AS', 'pages/{slug}-{lang}.html').format(**self.url_format)
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
if hasattr(self, "_get_content"):
|
||||
|
|
@ -138,6 +140,20 @@ class Page(object):
|
|||
class Article(Page):
|
||||
mandatory_properties = ('title', 'date', 'category')
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings.get('ARTICLE_URL', '{slug}.html').format(**self.url_format)
|
||||
|
||||
return self.settings.get('ARTICLE_LANG_URL', '{slug}-{lang}.html').format(**self.url_format)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings.get('ARTICLE_SAVE_AS', '{slug}.html').format(**self.url_format)
|
||||
|
||||
return self.settings.get('ARTICLE_LANG_SAVE_AS', '{slug}-{lang}.html').format(**self.url_format)
|
||||
|
||||
|
||||
class Quote(Page):
|
||||
base_properties = ('author', 'date')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue