Changeset 8371 for main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
- Timestamp:
- 6 May 2012, 14:33:14 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
r8342 r8371 24 24 from waeup.kofa.interfaces import MessageFactory as _ 25 25 from waeup.kofa.students.interfaces import ( 26 IStudent, IStudentStudyCourse, IStudentStudyLevel, ICourseTicket) 26 IStudent, IStudentStudyCourse, IStudentStudyLevel, ICourseTicket, 27 IStudentOnlinePayment) 27 28 from waeup.kofa.utils.batching import ExporterBase 28 29 from waeup.kofa.utils.helpers import iface_names … … 248 249 return self.export(tickets, filepath) 249 250 251 class PaymentsExporter(grok.GlobalUtility, ExporterBase): 252 """Exporter for OnlinePayment instances. 253 """ 254 grok.implements(ICSVExporter) 255 grok.name('studentpayments') 256 257 #: Fieldnames considered by this exporter 258 fields = tuple( 259 sorted(['reg_number', 'matric_number'] + 260 iface_names(IStudentOnlinePayment, exclude_attribs=False))) 261 262 #: The title under which this exporter will be displayed 263 title = _(u'Course Tickets') 264 265 def mangle_value(self, value, name, context=None): 266 """Treat location values special. 267 """ 268 if context is not None: 269 student = context.getStudent() 270 if name in ['reg_number', 'matric_number'] and student is not None: 271 value = getattr(student, name, None) 272 return super( 273 PaymentsExporter, self).mangle_value( 274 value, name, context=context) 275 276 def export(self, payments, filepath=None): 277 """Export `payments`, an iterable, as CSV file. 278 279 If `filepath` is ``None``, a raw string with CSV data is returned. 280 """ 281 writer, outfile = self.get_csv_writer(filepath) 282 for payment in payments: 283 self.write_item(payment, writer) 284 return self.close_outfile(filepath, outfile) 285 286 def export_all(self, site, filepath=None): 287 """Export payments into filepath as CSV data. 288 289 If `filepath` is ``None``, a raw string with CSV data is returned. 290 """ 291 catalog = queryUtility( 292 ICatalog, context=site, name='students_catalog', default=None) 293 if catalog is None: 294 return self.export([], filepath) 295 students = catalog.searchResults( 296 student_id=(None, None)) 297 payments = [] 298 for student in students: 299 if not 'payments' in student.keys(): 300 continue 301 for payment in student['payments'].values(): 302 payments.append(payment) 303 return self.export(payments, filepath)
Note: See TracChangeset for help on using the changeset viewer.