Browse Source

first pass on modularising it

main
cellarspoon 3 years ago
parent
commit
edf4dfca74
No known key found for this signature in database GPG Key ID: 3789458B3D0C410
  1. 76
      temp_index.py

76
temp_index.py

@ -1,45 +1,35 @@
"""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(
"text.pdf",
pagesize=landscape(A6),
rightMargin=18,
leftMargin=18,
topMargin=0,
bottomMargin=18,
)
content = [] def make_cards():
styles = getSampleStyleSheet() """The main entrypoint for card generation."""
# TODO: thread arguments into this logic
doc = create_doc("text.pdf")
content = get_fields(doc)
doc.build(content)
session = init_session("sqlite:///metadata.db")
# if book id from book table is the same as book id from comment table, show me that def get_fields():
for book in session.query(Book).all(): """Retrieve fields from the metadata."""
for comment in session.query(Comment).all(): content = []
if (book.id) == (comment.book): styles = getSampleStyleSheet()
print(book.id) session = init_session("sqlite:///metadata.db")
print(book.title)
print(book.authors)
print(book.timestamp)
print(book.path)
print(book.tags)
print(comment.text)
# create a paragraph and append content to it - e.g. book.title, book.authors etc for book in session.query(Book).all():
ptitle = Paragraph("<font size=12>{}</font>".format(book.title), styles["Italic"]) ptitle = Paragraph(
"<font size=12>{}</font>".format(book.title), styles["Italic"]
)
ptime = Paragraph( ptime = Paragraph(
"<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"] "<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"]
) )
pcomments = Paragraph("<font size=10>{}</font>".format(comment.text)) pcomments = Paragraph("<font size=10>{}</font>".format(comment.text))
# list comprehensions for authors and tags
format_string = "<font size=12>{}</font>" format_string = "<font size=12>{}</font>"
all_authors = [author.name for author in book.authors] all_authors = [author.name for author in book.authors]
glued_together = format_string.format(", ".join(all_authors)) glued_together = format_string.format(", ".join(all_authors))
@ -48,30 +38,12 @@ for book in session.query(Book).all():
all_tags = [tag.name for tag in book.tags] all_tags = [tag.name for tag in book.tags]
tags_glued_together = format_string.format(", ".join(all_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(ptitle)
content.append(Spacer(1, 12)) content.append(Spacer(1, 12))
content.append(ptime) content.append(ptime)
content.append(Spacer(1, 12)) content.append(Spacer(1, 12))
content.append(pcomments) 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"]) p = Paragraph(glued_together, styles["Normal"])
content.append(p) content.append(p)
content.append(PageBreak()) content.append(PageBreak())
@ -82,4 +54,16 @@ for book in session.query(Book).all():
content.append(PageBreak()) content.append(PageBreak())
content.append(Spacer(6, 12)) content.append(Spacer(6, 12))
doc.build(content) 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,
)

Loading…
Cancel
Save