Exemple #1
0
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)