summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2021-12-28 16:30:31 +0100
committerElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2021-12-28 16:30:31 +0100
commit325cf6b8f6e7087074f1860e871b882507ff8bba (patch)
tree0cf7ffe5149af6e0b1e51ae11499fb970143a4d3
parent81a6987e04106e8168b55cd84fbe6a7cd8a9d912 (diff)
Converted daily planner into the planner_generator command
-rwxr-xr-xdaily_planner_generator.py104
-rwxr-xr-xplanner_generator.py29
2 files changed, 29 insertions, 104 deletions
diff --git a/daily_planner_generator.py b/daily_planner_generator.py
deleted file mode 100755
index 80946d1..0000000
--- a/daily_planner_generator.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import datetime
-import locale
-import logging
-import os
-import subprocess
-import sys
-
-import jinja2
-
-
-locale.setlocale(locale.LC_ALL, '')
-
-
-def main():
- env = jinja2.Environment()
- loader = jinja2.FileSystemLoader('templates')
- template_verso = loader.load(env, 'daily-A6-v.svg')
- template_recto = loader.load(env, 'daily-A6-r.svg')
-
- destination_fname = "build/daily-A6-{year}-{page:03}.svg"
-
- os.makedirs("build", exist_ok=True)
-
- year = 2022
-
- template_cover = loader.load(env, 'cover-A6-r.svg')
- with open(destination_fname.format(
- year=year,
- page=0,
- ), 'w') as fp:
- fp.write(template_cover.render(year=year))
-
- day = datetime.date(year, 1, 1)
-
- page = 1
- while day.year == year:
- with open(destination_fname.format(
- year=year,
- page=page,
- ), 'w') as fp:
- fp.write(template_verso.render(day=day))
- page += 1
- day += datetime.timedelta(days=1)
-
- if day.year > year:
- break
-
- with open(destination_fname.format(
- year=year,
- page=page,
- ), 'w') as fp:
- fp.write(template_recto.render(day=day))
- page += 1
- day += datetime.timedelta(days=1)
-
- inkscape_commands = ";\n".join([
- (
- "file-open:build/{svg};"
- + " export-type: pdf;"
- + " export-filename:build/{pdf};"
- + " export-text-to-path;"
- + " export-do"
- ).format(
- svg = s,
- pdf = os.path.splitext(s)[0] + ".pdf",
- )
- for s in os.listdir("build")
- ])
- try:
- subprocess.run(
- ["inkscape", "--shell" ],
- input=inkscape_commands,
- text=True,
- )
- except FileNotFoundError:
- logging.warning("Inkscape is not installed, can't convert to pdf")
- logging.warning("Stopping here, you can use the svgs as you like")
- sys.exit(1)
-
- pdf_pages = sorted([
- os.path.join("build", p)
- for p in os.listdir("build")
- if p.endswith(".pdf")
- ])
- # insert an empty page on the second page, to start the year on a
- # left page
- pdf_pages.insert(1, "1, {}")
- try:
- subprocess.run([
- "pdfjam",
- "--outfile", "daily_planner_A6.pdf",
- *pdf_pages
- ])
- except FileNotFoundError:
- logging.warning("pdfjam is not installed")
- logging.warning("you will have to join the pdf pages yourself")
- sys.exit(1)
-
-
-if __name__ == '__main__':
- main()
diff --git a/planner_generator.py b/planner_generator.py
index b86ce68..eda562b 100755
--- a/planner_generator.py
+++ b/planner_generator.py
@@ -168,6 +168,35 @@ class WeeklyGenerator(Generator):
page += 1
+class DailyGenerator(Generator):
+ default_template = "daily-A6"
+
+ def generate_pages(self):
+ day = datetime.date(self.year, 1, 1)
+
+ # we want to start with a left side page (starting from 0)
+ page = 2
+ while day.year == self.year:
+ self.render_page(page=page, day=day)
+ page += 1
+ day += datetime.timedelta(days=1)
+
+ if day.year > self.year:
+ break
+
+ self.render_page(page=page, day=day)
+ page += 1
+ day += datetime.timedelta(days=1)
+
+ def get_pdf_pages(self):
+ pdf_pages = super().get_pdf_pages()
+ # insert an empty page on the second page, to start the year on
+ # a left page
+ pdf_pages.insert(1, "1, {}")
+
+ return pdf_pages
+
+
class Command:
"""
Generate a planner