diff --git a/temp_index.py b/temp_index.py
index 6ba9ad8..5184043 100644
--- a/temp_index.py
+++ b/temp_index.py
@@ -1,85 +1,69 @@
+"""Generates PDF cards from a calibre metadata.db."""
+
from calibrestekje import Book, Comment, Publisher, init_session
from reportlab.lib.pagesizes import *
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
from reportlab.pdfgen import canvas
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 = []
-styles = getSampleStyleSheet()
+def make_cards():
+ """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
-for book in session.query(Book).all():
- for comment in session.query(Comment).all():
- if (book.id) == (comment.book):
- print(book.id)
- print(book.title)
- print(book.authors)
- print(book.timestamp)
- print(book.path)
- print(book.tags)
- print(comment.text)
+def get_fields():
+ """Retrieve fields from the metadata."""
+ content = []
+ styles = getSampleStyleSheet()
+ session = init_session("sqlite:///metadata.db")
- # create a paragraph and append content to it - e.g. book.title, book.authors etc
- ptitle = Paragraph("{}".format(book.title), styles["Italic"])
- ptime = Paragraph(
- "Uploaded: {}".format(book.timestamp), styles["Normal"]
- )
- pcomments = Paragraph("{}".format(comment.text))
+ for book in session.query(Book).all():
+ ptitle = Paragraph(
+ "{}".format(book.title), styles["Italic"]
+ )
+ ptime = Paragraph(
+ "Uploaded: {}".format(book.timestamp), styles["Normal"]
+ )
+ pcomments = Paragraph("{}".format(comment.text))
- # list comprehensions for authors and tags
- format_string = "{}"
- all_authors = [author.name for author in book.authors]
- glued_together = format_string.format(", ".join(all_authors))
+ format_string = "{}"
+ all_authors = [author.name for author in book.authors]
+ glued_together = format_string.format(", ".join(all_authors))
- format_string = "{}"
- all_tags = [tag.name for tag in book.tags]
- tags_glued_together = format_string.format(", ".join(all_tags))
+ format_string = "{}"
+ all_tags = [tag.name for tag in book.tags]
+ tags_glued_together = format_string.format(", ".join(all_tags))
- # format_string = '{}'
- # all_comments = [comment.name for comment in comment.text]
- # comments_split_apart = format_string.format("".split(all_comments)[:50])
+ content.append(ptitle)
+ content.append(Spacer(1, 12))
+ content.append(ptime)
+ content.append(Spacer(1, 12))
+ content.append(pcomments)
- # import ipdb; ipdb.set_trace()
+ p = Paragraph(glued_together, styles["Normal"])
+ content.append(p)
+ content.append(PageBreak())
+ content.append(Spacer(6, 12))
- # append the other content
- content.append(ptitle)
- content.append(Spacer(1, 12))
- content.append(ptime)
- content.append(Spacer(1, 12))
- content.append(pcomments)
+ p = Paragraph(tags_glued_together, styles["Normal"])
+ content.append(p)
+ content.append(PageBreak())
+ content.append(Spacer(6, 12))
- # 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 = "{}".format(author_text)
+ return content
- # 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)
+def create_doc(filename):
+ """Build the Report Lab document template."""
+ return SimpleDocTemplate(
+ filename,
+ pagesize=landscape(A6),
+ rightMargin=18,
+ leftMargin=18,
+ topMargin=0,
+ bottomMargin=18,
+ )