first pass on modularising it

This commit is contained in:
cellarspoon 2021-11-29 11:26:48 +01:00
parent f5b7ff0ccd
commit edf4dfca74
No known key found for this signature in database
GPG Key ID: 03789458B3D0C410

View File

@ -1,85 +1,69 @@
"""Generates PDF cards from a calibre metadata.db."""
from calibrestekje import Book, Comment, Publisher, init_session from calibrestekje import Book, Comment, Publisher, init_session
from reportlab.lib.pagesizes import * from reportlab.lib.pagesizes import *
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
from reportlab.pdfgen import canvas from reportlab.pdfgen import canvas
from reportlab.platypus import PageBreak, Paragraph, SimpleDocTemplate, Spacer from reportlab.platypus import PageBreak, Paragraph, SimpleDocTemplate, Spacer
pagewidth, pageheight = landscape(A6)
doc = SimpleDocTemplate( def make_cards():
"text.pdf", """The main entrypoint for card generation."""
pagesize=landscape(A6), # TODO: thread arguments into this logic
rightMargin=18, doc = create_doc("text.pdf")
leftMargin=18, content = get_fields(doc)
topMargin=0, doc.build(content)
bottomMargin=18,
)
content = []
styles = getSampleStyleSheet()
session = init_session("sqlite:///metadata.db") def get_fields():
"""Retrieve fields from the metadata."""
content = []
styles = getSampleStyleSheet()
session = init_session("sqlite:///metadata.db")
# if book id from book table is the same as book id from comment table, show me that for book in session.query(Book).all():
for book in session.query(Book).all(): ptitle = Paragraph(
for comment in session.query(Comment).all(): "<font size=12>{}</font>".format(book.title), styles["Italic"]
if (book.id) == (comment.book): )
print(book.id) ptime = Paragraph(
print(book.title) "<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"]
print(book.authors) )
print(book.timestamp) pcomments = Paragraph("<font size=10>{}</font>".format(comment.text))
print(book.path)
print(book.tags)
print(comment.text)
# create a paragraph and append content to it - e.g. book.title, book.authors etc format_string = "<font size=12>{}</font>"
ptitle = Paragraph("<font size=12>{}</font>".format(book.title), styles["Italic"]) all_authors = [author.name for author in book.authors]
ptime = Paragraph( glued_together = format_string.format(", ".join(all_authors))
"<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"]
format_string = "<font size=10>{}</font>"
all_tags = [tag.name for tag in book.tags]
tags_glued_together = format_string.format(", ".join(all_tags))
content.append(ptitle)
content.append(Spacer(1, 12))
content.append(ptime)
content.append(Spacer(1, 12))
content.append(pcomments)
p = Paragraph(glued_together, styles["Normal"])
content.append(p)
content.append(PageBreak())
content.append(Spacer(6, 12))
p = Paragraph(tags_glued_together, styles["Normal"])
content.append(p)
content.append(PageBreak())
content.append(Spacer(6, 12))
return content
def create_doc(filename):
"""Build the Report Lab document template."""
return SimpleDocTemplate(
filename,
pagesize=landscape(A6),
rightMargin=18,
leftMargin=18,
topMargin=0,
bottomMargin=18,
) )
pcomments = Paragraph("<font size=10>{}</font>".format(comment.text))
# list comprehensions for authors and tags
format_string = "<font size=12>{}</font>"
all_authors = [author.name for author in book.authors]
glued_together = format_string.format(", ".join(all_authors))
format_string = "<font size=10>{}</font>"
all_tags = [tag.name for tag in book.tags]
tags_glued_together = format_string.format(", ".join(all_tags))
# format_string = '<font size=10>{}</font>'
# all_comments = [comment.name for comment in comment.text]
# comments_split_apart = format_string.format("".split(all_comments)[:50])
# import ipdb; ipdb.set_trace()
# append the other content
content.append(ptitle)
content.append(Spacer(1, 12))
content.append(ptime)
content.append(Spacer(1, 12))
content.append(pcomments)
# alternative way to list multiple authors... (without list comprehensions)
# first = True
# author_text = ""
# for author in book.authors:
# if not first:
# author_text += ", "
# author_text += author.name
# first = False
# author_text = "<font size=12>{}</font>".format(author_text)
# gluing together authors, tags
p = Paragraph(glued_together, styles["Normal"])
content.append(p)
content.append(PageBreak())
content.append(Spacer(6, 12))
p = Paragraph(tags_glued_together, styles["Normal"])
content.append(p)
content.append(PageBreak())
content.append(Spacer(6, 12))
doc.build(content)