Changeset 7019 for main/waeup.sirp/trunk/src/waeup/sirp/students/utils.py
- Timestamp:
- 7 Nov 2011, 13:03:42 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/students/utils.py
r7004 r7019 3 3 from grok import getSite 4 4 from random import SystemRandom as r 5 from datetime import date, datetime 6 from reportlab.pdfgen import canvas 7 from reportlab.lib.units import cm 8 from reportlab.lib.pagesizes import A4 9 from reportlab.lib.styles import getSampleStyleSheet 10 from reportlab.platypus import (Frame, Paragraph, Image, 11 Table, Spacer) 12 from reportlab.platypus.tables import TableStyle 13 from zope.formlib.form import setUpEditWidgets 5 14 from waeup.sirp.interfaces import academic_sessions_vocab 15 16 SLIP_STYLE = TableStyle( 17 [('VALIGN',(0,0),(-1,-1),'TOP')] 18 ) 6 19 7 20 def generate_student_id(students,letter): … … 85 98 def selectBed(available_beds): 86 99 return available_beds[0] 100 101 def setUpWidgets(view, ignore_request=False): 102 view.adapters = {} 103 view.widgets = setUpEditWidgets( 104 view.form_fields, view.prefix, view.context, view.request, 105 adapters=view.adapters, for_display=True, 106 ignore_request=ignore_request 107 ) 108 109 def renderStudentData(student, studentview): 110 setUpWidgets(studentview, ignore_request=True) 111 data = [] 112 style = getSampleStyleSheet() 113 for widget in studentview.widgets: 114 if widget.name == 'form.adm_code': 115 continue 116 f_label = '<font size=12>%s</font>:' % widget.label.strip() 117 f_label = Paragraph(f_label, style["Normal"]) 118 f_text = '<font size=12>%s</font>' % widget() 119 f_text = Paragraph(f_text, style["Normal"]) 120 data.append([f_label,f_text]) 121 table = Table(data,style=SLIP_STYLE) 122 return table 123 124 # To be specified in customization packages, see also view which 125 # calls the function. 126 def renderPDF(view, subject='', filename='slip.pdf', student=None, studentview=None): 127 # (0,0),(-1,-1) = whole table 128 # (0,0),(0,-1) = first column 129 # (-1,0),(-1,-1) = last column 130 # (0,0),(-1,0) = first row 131 # (0,-1),(-1,-1) = last row 132 133 pdf = canvas.Canvas(filename,pagesize=A4) 134 pdf.setTitle(view.label) 135 pdf.setSubject(subject) 136 pdf.setAuthor('%s (%s)' % (view.request.principal.title, 137 view.request.principal.id)) 138 pdf.setCreator('WAeUP SIRP') 139 width, height = A4 140 style = getSampleStyleSheet() 141 pdf.line(1*cm,height-(1.8*cm),width-(1*cm),height-(1.8*cm)) 142 143 story = [] 144 frame_header = Frame(1*cm,1*cm,width-(1.7*cm),height-(1.7*cm)) 145 header_title = getattr(getSite(), 'name', u'Sample University') 146 story.append(Paragraph(header_title, style["Heading1"])) 147 frame_header.addFromList(story,pdf) 148 149 story = [] 150 frame_body = Frame(1*cm,1*cm,width-(2*cm),height-(3.5*cm)) 151 story.append(Paragraph(view.label, style["Heading2"])) 152 #story.append(HRFlowable()) 153 if student: 154 story.append(Spacer(1, 18)) 155 studenttable = renderStudentData(student, studentview) 156 story.append(studenttable) 157 story.append(Spacer(1, 18)) 158 setUpWidgets(view) 159 data = [] 160 for widget in view.widgets: 161 f_label = '<font size=12>%s</font>:' % widget.label.strip() 162 f_label = Paragraph(f_label, style["Normal"]) 163 f_text = '<font size=12>%s</font>' % widget() 164 f_text = Paragraph(f_text, style["Normal"]) 165 data.append([f_label,f_text]) 166 table = Table(data,style=SLIP_STYLE) 167 story.append(table) 168 frame_body.addFromList(story,pdf) 169 170 story = [] 171 frame_footer = Frame(1*cm,0,width-(2*cm),1*cm) 172 timestamp = datetime.now().strftime("%d/%m/%Y %H:%M:%S") 173 f_text = '<font size=10>%s</font>' % timestamp 174 story.append(Paragraph(f_text, style["Normal"])) 175 frame_footer.addFromList(story,pdf) 176 177 view.response.setHeader( 178 'Content-Type', 'application/pdf') 179 return pdf.getpdfdata()
Note: See TracChangeset for help on using the changeset viewer.