Index: main/waeup.aaue/trunk/src/waeup/aaue/students/export.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/export.py	(revision 14592)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/export.py	(revision 14593)
@@ -18,7 +18,11 @@
 """Exporters for student related stuff.
 """
+import grok
+from zope.component import getUtility
 from waeup.kofa.utils.batching import ExporterBase
 from waeup.kofa.utils.helpers import iface_names
-from waeup.kofa.students.export import DataForLecturerExporter
+from waeup.kofa.interfaces import IKofaUtils
+from waeup.kofa.students.export import (get_levels,
+    DataForLecturerExporter, StudentExporterBase,)
 from waeup.aaue.students.interfaces import (
     ICustomStudent, ICustomStudentStudyCourse,
@@ -103,2 +107,47 @@
               'level', 'code', 'level_session', 'ca', 'score')
 
+class LevelReportDataExporter(grok.GlobalUtility, StudentExporterBase):
+    """
+    """
+    grok.name('levelreportdata')
+
+    fields = ('matric_number', 'display_fullname',
+        'credits_counted', 'credits_passed','level_gpa',
+        'failed_courses','not_taken_courses','cum_credits_taken',
+        'cum_credits_passed','cgpa','remark')
+    title = u'Summary of Result Data'
+
+    def filter_func(self, x, **kw):
+        return get_levels(x)
+
+    def mangle_value(self, value, name, context=None):
+        """The mangler determines the student id, nothing else.
+        """
+        if context is not None:
+            student = context.student
+            format_float = getUtility(IKofaUtils).format_float
+            if name in ('matric_number',
+                        'display_fullname',) and student is not None:
+                value = getattr(student, name, None)
+            elif name == 'credits_counted':
+                value = context.gpa_params[1]
+            elif name == 'credits_passed':
+                value = context.passed_params[2]
+            elif name == 'level_gpa':
+                value = format_float(context.gpa_params[0], 3)
+            elif name == 'failed_courses':
+                value = context.passed_params[4]
+            elif name == 'not_taken_courses':
+                value = context.passed_params[5]
+            elif name == 'cum_credits_taken':
+                value = context.cumulative_params[1]
+            elif name == 'cum_credits_passed':
+                value = context.cumulative_params[4]
+            elif name == 'cgpa':
+                value = format_float(context.cumulative_params[0], 3)
+            elif name == 'remark':
+                value = getattr(context, 'remark', '')
+        return super(
+            LevelReportDataExporter, self).mangle_value(
+            value, name, context=context)
+
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py	(revision 14592)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py	(revision 14593)
@@ -10,5 +10,6 @@
     CustomStudentExporter, CustomStudentPaymentExporter,
     CustomStudentStudyLevelExporter,
-    CustomCourseTicketExporter)
+    CustomCourseTicketExporter,
+    LevelReportDataExporter)
 from waeup.aaue.testing import FunctionalLayer
 
@@ -174,2 +175,28 @@
         return
 
+class LevelReportDataExporterTest(StudentImportExportSetup):
+
+    layer = FunctionalLayer
+
+    def setUp(self):
+        super(LevelReportDataExporterTest, self).setUp()
+        self.setup_for_export()
+        return
+
+    def test_export_all(self):
+        # we can really export study levels
+        # set values we can expect in export file
+        self.setup_student(self.student)
+        exporter = LevelReportDataExporter()
+        exporter.export_all(self.app, self.outfile)
+        result = open(self.outfile, 'rb').read()
+        self.assertEqual(
+            result,
+            'matric_number,display_fullname,credits_counted,credits_passed,'
+            'level_gpa,failed_courses,not_taken_courses,cum_credits_taken,'
+            'cum_credits_passed,cgpa,remark\r\n'
+            '234,"TESTER, Anna M.",0,0,0.000,,CRS1 ,0,0,0.000,\r\n'
+            )
+        return
+
+
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 14592)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 14593)
@@ -495,2 +495,9 @@
     # AAUE prefix
     STUDENT_ID_PREFIX = u'E'
+
+    STUDENT_EXPORTER_NAMES = ('students', 'studentstudycourses',
+            'studentstudylevels', 'coursetickets',
+            'studentpayments', 'studentunpaidpayments',
+            'bedtickets', 'paymentsoverview',
+            'studylevelsoverview', 'combocard', 'bursary',
+            'levelreportdata')
