Проверки published. Если дата в будущем, то не добавлять страницу [closes #9]

master
Антон Касимов 2019-03-03 02:54:50 +03:00
parent 25af7ab09e
commit c7c9ea3c84
1 changed files with 30 additions and 14 deletions

View File

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