Changeset 9427 for main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
- Timestamp:
- 26 Oct 2012, 17:57:26 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
r9420 r9427 24 24 from waeup.kofa.students.interfaces import ( 25 25 IStudent, IStudentStudyCourse, IStudentStudyLevel, ICourseTicket, 26 IStudentOnlinePayment, ICSVStudentExporter )26 IStudentOnlinePayment, ICSVStudentExporter, IBedTicket) 27 27 from waeup.kofa.utils.batching import ExporterBase 28 28 from waeup.kofa.utils.helpers import iface_names … … 76 76 return payments 77 77 78 def get_bedtickets(students): 79 """Get all bedtickets of `students`. 80 """ 81 tickets = [] 82 for student in students: 83 for ticket in student.get('accommodation', {}).values(): 84 tickets.append(ticket) 85 return tickets 78 86 79 87 class StudentExporterBase(ExporterBase): … … 273 281 def export_student(self, student, filepath=None): 274 282 return self.export(get_payments([student]), filepath) 283 284 class BedTicketsExporter(grok.GlobalUtility, StudentExporterBase): 285 """Exporter for BedTicket instances. 286 """ 287 grok.name('bedtickets') 288 289 #: Fieldnames considered by this exporter 290 fields = tuple( 291 sorted(iface_names( 292 IBedTicket, exclude_attribs=False))) + ( 293 'student_id', 'actual_bed_type') 294 295 #: The title under which this exporter will be displayed 296 title = _(u'Bed Tickets') 297 298 def mangle_value(self, value, name, context=None): 299 """Treat location values and others special. 300 """ 301 if context is not None: 302 student = context.student 303 if name in ['student_id'] and student is not None: 304 value = getattr(student, name, None) 305 if name == 'bed' and value is not None: 306 value = getattr(value, 'bed_id', None) 307 if name == 'actual_bed_type': 308 value = getattr(getattr(context, 'bed', None), 'bed_type') 309 return super( 310 BedTicketsExporter, self).mangle_value( 311 value, name, context=context) 312 313 def export_all(self, site, filepath=None): 314 """Export payments into filepath as CSV data. 315 316 If `filepath` is ``None``, a raw string with CSV data is returned. 317 """ 318 return self.export(get_bedtickets(get_students(site)), filepath) 319 320 def export_student(self, student, filepath=None): 321 return self.export(get_bedtickets([student]), filepath)
Note: See TracChangeset for help on using the changeset viewer.