Changeset 9574
- Timestamp:
- 8 Nov 2012, 13:25:38 (12 years ago)
- Location:
- main/waeup.kofa/trunk/src/waeup/kofa/students
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
r9427 r9574 19 19 """ 20 20 import grok 21 from datetime import datetime 21 22 from zope.catalog.interfaces import ICatalog 22 23 from zope.component import queryUtility … … 320 321 def export_student(self, student, filepath=None): 321 322 return self.export(get_bedtickets([student]), filepath) 323 324 class StudentPaymentsOverviewExporter(StudentsExporter): 325 """Exporter for students with payment overview. 326 """ 327 grok.name('paymentsoverview') 328 329 curr_year = datetime.now().year 330 year_range = range(curr_year - 9, curr_year + 1) 331 year_range_tuple = tuple([str(year) for year in year_range]) 332 333 #: Fieldnames considered by this exporter 334 fields = ('student_id', ) + ( 335 'state', 'certcode', 'faccode', 'depcode', 'is_postgrad', 336 'current_level', 'current_session', 337 ) + year_range_tuple 338 339 #: The title under which this exporter will be displayed 340 title = _(u'Student Payments Overview') 341 342 def mangle_value(self, value, name, context=None): 343 if name in self.year_range_tuple and context is not None: 344 value = '' 345 for ticket in context['payments'].values(): 346 if ticket.p_state == 'paid' and \ 347 ticket.p_category == 'schoolfee' and \ 348 ticket.p_session == int(name): 349 value = ticket.amount_auth 350 break 351 return super( 352 StudentsExporter, self).mangle_value( 353 value, name, context=context) -
main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_export.py
r9543 r9574 5 5 from waeup.kofa.students.export import ( 6 6 StudentsExporter, StudentStudyCourseExporter, StudentStudyLevelExporter, 7 CourseTicketExporter, PaymentsExporter, BedTicketsExporter) 7 CourseTicketExporter, PaymentsExporter, BedTicketsExporter, 8 StudentPaymentsOverviewExporter) 8 9 from waeup.kofa.students.payments import StudentOnlinePayment 9 10 from waeup.kofa.students.accommodation import BedTicket … … 12 13 from waeup.kofa.students.tests.test_batching import StudentImportExportSetup 13 14 from waeup.kofa.testing import FunctionalLayer 15 16 curr_year = datetime.datetime.now().year 17 year_range = range(curr_year - 9, curr_year + 1) 18 year_range_str = ','.join([str(i) for i in year_range]) 19 14 20 15 21 class StudentsExporterTest(StudentImportExportSetup): … … 531 537 ) 532 538 return 539 540 class StudentPaymentsOverviewExporterTest(StudentImportExportSetup): 541 542 layer = FunctionalLayer 543 544 def setUp(self): 545 super(StudentPaymentsOverviewExporterTest, self).setUp() 546 self.setup_for_export() 547 return 548 549 def test_ifaces(self): 550 # make sure we fullfill interface contracts 551 obj = StudentPaymentsOverviewExporter() 552 verifyObject(ICSVExporter, obj) 553 verifyClass(ICSVExporter, StudentPaymentsOverviewExporter) 554 return 555 556 def test_get_as_utility(self): 557 # we can get a payments exporter as utility 558 result = queryUtility(ICSVExporter, name="paymentsoverview") 559 self.assertTrue(result is not None) 560 return 561 562 def test_export(self): 563 self.setup_student(self.student) 564 exporter = StudentPaymentsOverviewExporter() 565 exporter.export([self.student], self.outfile) 566 result = open(self.outfile, 'rb').read() 567 self.assertEqual( 568 'student_id,state,certcode,faccode,depcode,is_postgrad,' 569 'current_level,current_session,' 570 '%s\r\n' 571 'A111111,created,CERT1,NA,NA,0,200,2012,' 572 ',,,,,,,,,\r\n' % year_range_str, 573 result 574 ) 575 return 576 577 def test_export_all(self): 578 # we can really export students 579 # set values we can expect in export file 580 self.setup_student(self.student) 581 # We add successful payments 582 payment = StudentOnlinePayment() 583 payment.p_id = 'my-id' 584 payment.p_session = 2009 585 payment.amount_auth = 12.12 586 payment.p_state = u'paid' 587 self.student['payments']['my-2ndpayment'] = payment 588 exporter = StudentPaymentsOverviewExporter() 589 exporter.export_all(self.app, self.outfile) 590 result = open(self.outfile, 'rb').read() 591 self.assertEqual( 592 'student_id,state,certcode,faccode,depcode,is_postgrad,' 593 'current_level,current_session,' 594 '%s\r\nA111111,created,CERT1,NA,NA,0,' 595 '200,2012,,,,,,,12.12,,,\r\n' % year_range_str, 596 result 597 ) 598 return
Note: See TracChangeset for help on using the changeset viewer.