def write_info_sheets(output, enrollments): story = [] enrollment_queue = deque() for enrollment in enrollments: enrollment_queue.append(enrollment) story.extend(story_for_info_sheet(enrollment)) story.append(NextStudent()) story.append(PageBreak()) #Makes the assumption of one page per student sheet def draw_footer(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 12) canvas.setStrokeColor(colors.grey) canvas.setFillColor(colors.grey) enrollment = doc.current_enrollment if enrollment: canvas.drawString(.75 * inch, .75 * inch, enrollment.student.last_name_first) canvas.drawRightString(7.75 * inch, .75 * inch, "Grade: {}".format(enrollment.grade.grade)) canvas.restoreState() doc = SimpleDocTemplate(output, pagesize=(8.5 * inch, 11 * inch)) doc.enrollments = enrollment_queue #Pop the first enrollment so current_enrollment is accurate and NextStudent() works property doc.current_enrollment = doc.enrollments.popleft() doc.build(story, onFirstPage=draw_footer, onLaterPages=draw_footer)
def write_info_sheets(output, enrollments): story = [] enrollment_queue = deque() for enrollment in enrollments: enrollment_queue.append(enrollment) story.extend(story_for_info_sheet(enrollment)) story.append(NextStudent()) story.append(PageBreak()) #Makes the assumption of one page per student sheet def draw_footer(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 12) canvas.setStrokeColor(colors.grey) canvas.setFillColor(colors.grey) enrollment = doc.current_enrollment if enrollment: canvas.drawString(.75*inch, .75*inch, enrollment.student.last_name_first) canvas.drawRightString(7.75*inch, .75*inch, "Grade: {}".format(enrollment.grade.grade)) canvas.restoreState() doc = SimpleDocTemplate(output, pagesize=(8.5*inch, 11*inch)) doc.enrollments = enrollment_queue #Pop the first enrollment so current_enrollment is accurate and NextStudent() works property doc.current_enrollment = doc.enrollments.popleft() doc.build(story, onFirstPage=draw_footer, onLaterPages=draw_footer)