Проверки 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
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):