mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-19 12:59:24 +00:00
Many improvements. QR code, fixed page size, better use of page estate, etc. Also pdfkit should kind of work now (not quite using the full page size, but at least it's not utterly broken like before).
58 lines
1.4 KiB
Python
Executable File
58 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import yaml
|
|
import jinja2
|
|
|
|
|
|
# Read settings from user-provided settings file
|
|
context = yaml.safe_load(open(sys.argv[1]))
|
|
|
|
ips = list(open("ips.txt"))
|
|
clustersize = context["clustersize"]
|
|
|
|
print("---------------------------------------------")
|
|
print(" Number of IPs: {}".format(len(ips)))
|
|
print(" VMs per cluster: {}".format(clustersize))
|
|
print("---------------------------------------------")
|
|
|
|
assert len(ips)%clustersize == 0
|
|
|
|
clusters = []
|
|
|
|
while ips:
|
|
cluster = ips[:clustersize]
|
|
ips = ips[clustersize:]
|
|
clusters.append(cluster)
|
|
|
|
context["clusters"] = clusters
|
|
|
|
template_file_name = context["cards_template"]
|
|
template_file_path = os.path.join(
|
|
os.path.dirname(__file__),
|
|
"..",
|
|
"templates",
|
|
template_file_name
|
|
)
|
|
template = jinja2.Template(open(template_file_path).read())
|
|
with open("ips.html", "w") as f:
|
|
f.write(template.render(**context))
|
|
print("Generated ips.html")
|
|
|
|
|
|
try:
|
|
import pdfkit
|
|
paper_size = context["paper_size"]
|
|
margin = {"A4": "0.5cm", "Letter": "0.2in"}[paper_size]
|
|
with open("ips.html") as f:
|
|
pdfkit.from_file(f, "ips.pdf", options={
|
|
"page-size": paper_size,
|
|
"margin-top": margin,
|
|
"margin-bottom": margin,
|
|
"margin-left": margin,
|
|
"margin-right": margin,
|
|
})
|
|
print("Generated ips.pdf")
|
|
except ImportError:
|
|
print("WARNING: could not import pdfkit; did not generate ips.pdf")
|