Проверки published. Если дата в будущем, то не добавлять страницу [closes #9]
parent
25af7ab09e
commit
c7c9ea3c84
|
@ -1,8 +1,9 @@
|
|||
from pyramid.path import AssetResolver
|
||||
from pathlib import PurePath
|
||||
import yaml
|
||||
import frontmatter
|
||||
import markdown
|
||||
from datetime import datetime
|
||||
from pyramid.path import AssetResolver
|
||||
from zope.interface import (Interface, implementer)
|
||||
|
||||
from flatfilecms.filters import IgnoreExtension
|
||||
|
@ -66,6 +67,10 @@ class CustomYAMLHandler(frontmatter.YAMLHandler):
|
|||
return yaml.load(fm, self.loader)
|
||||
|
||||
|
||||
class HiddenFile(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class Folder(dict):
|
||||
def __init__(self, name, parent, path):
|
||||
self.path = path
|
||||
|
@ -82,19 +87,23 @@ class Folder(dict):
|
|||
|
||||
def create_file(self, asset):
|
||||
path = PurePath(asset)
|
||||
if path.suffix == '.md':
|
||||
self[path.stem] = Markdown(path.stem, self, asset)
|
||||
elif path.suffix == '.yaml':
|
||||
self[path.stem] = YAML(path.stem, self, asset)
|
||||
elif path.suffix == '.j2' or path.suffix == '.jinja2':
|
||||
self[path.stem] = Jinja2(path.stem, self, asset)
|
||||
else:
|
||||
name = path.name
|
||||
# Если имя файла не index.html,
|
||||
# то отдавать по имени файла
|
||||
if name == 'index.html':
|
||||
name = 'index'
|
||||
self[name] = Document(name, self, asset)
|
||||
try:
|
||||
if path.suffix == '.md':
|
||||
self[path.stem] = Markdown(path.stem, self, asset)
|
||||
elif path.suffix == '.yaml':
|
||||
self[path.stem] = YAML(path.stem, self, asset)
|
||||
elif path.suffix == '.j2' or path.suffix == '.jinja2':
|
||||
self[path.stem] = Jinja2(path.stem, self, asset)
|
||||
else:
|
||||
name = path.name
|
||||
# Если имя файла не index.html,
|
||||
# то отдавать по имени файла
|
||||
if name == 'index.html':
|
||||
name = 'index'
|
||||
self[name] = Document(name, self, asset)
|
||||
except HiddenFile:
|
||||
# Do nothing, file was not added to self
|
||||
pass
|
||||
|
||||
def create_dir(self, asset):
|
||||
path = PurePath(asset)
|
||||
|
@ -128,6 +137,10 @@ class Markdown(Document):
|
|||
AssetResolver().resolve(self.path).stream(),
|
||||
handler=CustomYAMLHandler(self.data_path),
|
||||
).to_dict()
|
||||
if 'published' in self.page and \
|
||||
str(datetime.now()) < str(self.page['published']):
|
||||
raise HiddenFile
|
||||
|
||||
|
||||
|
||||
@implementer(IMarkdown)
|
||||
|
@ -137,6 +150,9 @@ class YAML(Document):
|
|||
self.page = yaml.load(
|
||||
AssetResolver().resolve(self.path).stream(),
|
||||
LoaderFactory(self.data_path))
|
||||
if 'published' in self.page and \
|
||||
str(datetime.now()) < str(self.page['published']):
|
||||
raise HiddenFile
|
||||
|
||||
|
||||
class Jinja2(Document):
|
||||
|
|
Reference in New Issue