forked from github/pelican
Factorize some code about URL wrapping.
This commit is contained in:
parent
8499ce3340
commit
3bdc769134
1 changed files with 22 additions and 47 deletions
|
|
@ -2,6 +2,7 @@
|
|||
from datetime import datetime
|
||||
from os import getenv
|
||||
from sys import platform, stdin
|
||||
import functools
|
||||
import locale
|
||||
|
||||
from pelican.log import warning, error
|
||||
|
|
@ -108,17 +109,13 @@ class Page(object):
|
|||
'category': getattr(self, 'category', 'misc'),
|
||||
}
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings['PAGE_URL'].format(**self.url_format)
|
||||
return self.settings['PAGE_LANG_URL'].format(**self.url_format)
|
||||
def _expand_settings(self, key):
|
||||
fq_key = ('%s_%s' % (self.__class__.__name__, key)).upper()
|
||||
return self.settings[fq_key].format(**self.url_format)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings['PAGE_SAVE_AS'].format(**self.url_format)
|
||||
return self.settings['PAGE_LANG_SAVE_AS'].format(**self.url_format)
|
||||
def get_url_setting(self, key):
|
||||
key = key if self.in_default_lang else 'lang_%s' % key
|
||||
return self._expand_settings(key)
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
|
|
@ -139,22 +136,13 @@ class Page(object):
|
|||
summary = property(_get_summary, _set_summary, "Summary of the article."
|
||||
"Based on the content. Can't be set")
|
||||
|
||||
url = property(functools.partial(get_url_setting, key='url'))
|
||||
save_as = property(functools.partial(get_url_setting, key='save_as'))
|
||||
|
||||
|
||||
class Article(Page):
|
||||
mandatory_properties = ('title', 'date', 'category')
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings['ARTICLE_URL'].format(**self.url_format)
|
||||
return self.settings['ARTICLE_LANG_URL'].format(**self.url_format)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
if self.in_default_lang:
|
||||
return self.settings['ARTICLE_SAVE_AS'].format(**self.url_format)
|
||||
return self.settings['ARTICLE_LANG_SAVE_AS'].format(**self.url_format)
|
||||
|
||||
|
||||
class Quote(Page):
|
||||
base_properties = ('author', 'date')
|
||||
|
|
@ -163,8 +151,12 @@ class Quote(Page):
|
|||
class URLWrapper(object):
|
||||
def __init__(self, name, settings):
|
||||
self.name = unicode(name)
|
||||
self.slug = slugify(self.name)
|
||||
self.settings = settings
|
||||
|
||||
def as_dict(self):
|
||||
return self.__dict__
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.name)
|
||||
|
||||
|
|
@ -177,42 +169,25 @@ class URLWrapper(object):
|
|||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return '%s.html' % self.name
|
||||
def _from_settings(self, key):
|
||||
setting = "%s_%s" % (self.__class__.__name__.upper(), key)
|
||||
return self.settings[setting].format(**self.as_dict())
|
||||
|
||||
url = property(functools.partial(_from_settings, key='URL'))
|
||||
save_as = property(functools.partial(_from_settings, key='SAVE_AS'))
|
||||
|
||||
|
||||
class Category(URLWrapper):
|
||||
@property
|
||||
def url(self):
|
||||
return self.settings['CATEGORY_URL'].format(name=self.name)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
return self.settings['CATEGORY_SAVE_AS'].format(name=self.name)
|
||||
pass
|
||||
|
||||
|
||||
class Tag(URLWrapper):
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super(Tag, self).__init__(unicode.strip(name), *args, **kwargs)
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return self.settings['TAG_URL'].format(name=self.name)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
return self.settings['TAG_SAVE_AS'].format(name=self.name)
|
||||
|
||||
|
||||
class Author(URLWrapper):
|
||||
@property
|
||||
def url(self):
|
||||
return self.settings['AUTHOR_URL'].format(name=self.name)
|
||||
|
||||
@property
|
||||
def save_as(self):
|
||||
return self.settings['AUTHOR_SAVE_AS'].format(name=self.name)
|
||||
pass
|
||||
|
||||
|
||||
def is_valid_content(content, f):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue