Проверки published. Если дата в будущем, то не добавлять страницу [closes #9]
parent
25af7ab09e
commit
c7c9ea3c84
|
@ -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):
|
||||||
|
|
Reference in New Issue