updates
This commit is contained in:
43
classes.py
43
classes.py
@@ -8,15 +8,7 @@ from logger import logger
|
|||||||
from config import Config
|
from config import Config
|
||||||
from jinja_env import env, content_item_template, index_template
|
from jinja_env import env, content_item_template, index_template
|
||||||
|
|
||||||
class DefaultFrontmatterHeader:
|
class ContentItem:
|
||||||
def __init__(self, title):
|
|
||||||
self.title = f"title: '{title}'\n"
|
|
||||||
self.date = f"date: '{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}'\n"
|
|
||||||
self.omit_second_title = f"omit_second_title: '{str(False)}'\n"
|
|
||||||
self.description = "description: \n"
|
|
||||||
self.author = "author: \n"
|
|
||||||
|
|
||||||
class ContentItemPrototype:
|
|
||||||
def render_content(self):
|
def render_content(self):
|
||||||
logger.debug(f"Rendering {self.source_filename} to {Config.OUTPUT_DIR}/{self.target_filename}")
|
logger.debug(f"Rendering {self.source_filename} to {Config.OUTPUT_DIR}/{self.target_filename}")
|
||||||
if self.image_file.exists():
|
if self.image_file.exists():
|
||||||
@@ -31,20 +23,22 @@ class ContentItemPrototype:
|
|||||||
def parse_content(self):
|
def parse_content(self):
|
||||||
try:
|
try:
|
||||||
self.source_filename = Path(self.source_filename)
|
self.source_filename = Path(self.source_filename)
|
||||||
self.subdir = self.source_filename.parent
|
|
||||||
logger.debug(f"Parsing item {self.source_filename}")
|
logger.debug(f"Parsing item {self.source_filename}")
|
||||||
|
self.subdir = self.source_filename.parent
|
||||||
self.slug = self.source_filename.stem
|
self.slug = self.source_filename.stem
|
||||||
self.target_filename = Path(f"{Config.OUTPUT_DIR}/{self.source_filename.parent}/{self.source_filename.stem}.html")
|
self.target_filename = Path(f"{Config.OUTPUT_DIR}/{self.source_filename.parent}/{self.source_filename.stem}.html")
|
||||||
self.data = frontmatter.load(self.source_filename)
|
self.data = frontmatter.load(self.source_filename)
|
||||||
self.html = markdown.markdown(self.data.content)
|
self.html = markdown.markdown(self.data.content.replace('\n', ' \n'))
|
||||||
self.url = "<a href=" + f"{self.subdir}/{self.slug}.html" + "> ...read more</a>"
|
self.url = "<a href=" + f"{self.subdir}/{self.slug}.html" + "> ...read more</a>"
|
||||||
self.preview = self.html[:300] + self.url
|
self.preview = self.html[:300] + self.url
|
||||||
self.title = self.data.get("title", self.slug)
|
self.title = self.data.get("title", self.slug)
|
||||||
self.omit_second_title = self.data.get("omit_second_title", False)
|
self.omit_second_title = self.data.get("omit_second_title", False)
|
||||||
self.date = self.data.get("date", "2000-01-01T00:00:00+03:00")
|
self.date = self.data.get("date", "2000-01-01T00:00:00+03:00")
|
||||||
self.image_file = self.source_filename.stem + ".jpg"
|
self.categories = self.data.get("categories", str([]))
|
||||||
self.css_file = self.source_filename.stem + ".css"
|
self.hidden = self.data.get("hidden", str(False))
|
||||||
self.js_file = self.source_filename.stem + ".js"
|
self.image_file = Path(self.source_filename.stem + ".jpg")
|
||||||
|
self.css_file = Path(self.source_filename.stem + ".css")
|
||||||
|
self.js_file = Path(self.source_filename.stem + ".js")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
|
|
||||||
@@ -52,20 +46,21 @@ class ContentItemPrototype:
|
|||||||
with open(self.source_filename, mode="w", encoding="utf-8") as f:
|
with open(self.source_filename, mode="w", encoding="utf-8") as f:
|
||||||
f.writelines([
|
f.writelines([
|
||||||
"---\n",
|
"---\n",
|
||||||
self.default_frontmatter_header.title,
|
f"title: {self.source_filename.stem}\n",
|
||||||
self.default_frontmatter_header.date,
|
f"date: '{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}'\n",
|
||||||
self.default_frontmatter_header.description,
|
"description: ''\n",
|
||||||
self.default_frontmatter_header.author,
|
"author: ''\n",
|
||||||
self.default_frontmatter_header.omit_second_title,
|
"categories: ['default']\n",
|
||||||
"---\n"
|
"hidden: 'False'\n",
|
||||||
|
"omit_second_title: 'False'\n",
|
||||||
|
"---\n",
|
||||||
|
"\n\n\n"
|
||||||
])
|
])
|
||||||
|
|
||||||
def __init__(self, filename, title = None):
|
def __init__(self, filename):
|
||||||
self.source_filename = filename
|
self.source_filename = filename
|
||||||
self.title = title or self.source_filename.stem
|
|
||||||
self.default_frontmatter_header = DefaultFrontmatterHeader(self.title)
|
|
||||||
|
|
||||||
class SitePrototype:
|
class Site:
|
||||||
def init_site():
|
def init_site():
|
||||||
logger.info("Initializing new site")
|
logger.info("Initializing new site")
|
||||||
content_dir = Path(Config.CONTENT_DIR)
|
content_dir = Path(Config.CONTENT_DIR)
|
||||||
|
|||||||
@@ -8,11 +8,10 @@ from logger import logger
|
|||||||
def create_content(filename):
|
def create_content(filename):
|
||||||
filename = Path(f"{Config.CONTENT_DIR}/{filename}.md")
|
filename = Path(f"{Config.CONTENT_DIR}/{filename}.md")
|
||||||
if not filename.exists():
|
if not filename.exists():
|
||||||
fh = DefaultFrontmatterHeader(filename.stem)
|
|
||||||
logger.debug(f"Creating new content {filename}")
|
logger.debug(f"Creating new content {filename}")
|
||||||
with filename.open("w", encoding="utf-8") as f:
|
new_content_item = ContentItem(filename)
|
||||||
f.writelines(['---\n', fh.title, fh.date, fh.description, fh.author, fh.omit_second_title, '---\n', '\n', '\n'])
|
new_content_item.create_content()
|
||||||
|
|
||||||
def edit_content(filename):
|
def edit_content(filename):
|
||||||
logger.debug(f"Editing content {filename}")
|
logger.debug(f"Editing content {filename}")
|
||||||
editor = os.environ.get('EDITOR', 'vim')
|
editor = os.environ.get('EDITOR', 'vim')
|
||||||
|
|||||||
Reference in New Issue
Block a user