Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_webservices.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_webservices.py	(revision 17769)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_webservices.py	(revision 17787)
@@ -1111,2 +1111,128 @@
         self.assertEqual(xmlout, RESPONSE_XML)
         return
+
+    def test_get_student_info(self):
+        server = ServerProxy('http://mgr:mgrpw@localhost/app')
+        self.setup_student(self.student)
+        result = server.get_student_info('123')
+        self.assertEqual(result,
+            ['Anna Tester', 'CERT1', '1234', 'aa@aa.ng'])
+        REQUEST_XML = """\
+<?xml version="1.0"?>
+<methodCall>
+<methodName>get_student_info</methodName>
+<params>
+<param>
+<value><string>K1000000</string></value>
+</param>
+</params>
+</methodCall>"""
+        RESPONSE_XML = """\
+<?xml version='1.0'?>
+<methodResponse>
+<params>
+<param>
+<value><array><data>
+<value><string>Anna Tester</string></value>
+<value><string>CERT1</string></value>
+<value><string>1234</string></value>
+<value><string>aa@aa.ng</string></value>
+</data></array></value>
+</param>
+</params>
+</methodResponse>
+"""
+        xmlout = self.XMLRPC_post(REQUEST_XML)
+        self.assertEqual(xmlout, RESPONSE_XML)
+        return
+
+    def test_get_student_base_data(self):
+        server = ServerProxy('http://mgr:mgrpw@localhost/app')
+        result = server.get_student_base_data()
+        self.assertEqual(result,
+            [{'entry_mode': None,
+              'reg_number': '123',
+              'firstname': 'Anna',
+              'middlename': None,
+              'current_session': 2004,
+              'entry_session': 2004,
+              'certcode': 'CERT1',
+              'state': 'created',
+              'student_id': 'K1000000',
+              'faccode': 'fac1',
+              'lastname': 'Tester',
+              'matric_number': '234',
+              'depcode': 'dep1'}])
+        REQUEST_XML = """\
+<?xml version="1.0"?>
+<methodCall>
+<methodName>get_student_base_data</methodName>
+<params>
+</params>
+</methodCall>"""
+        RESPONSE_XML = """\
+<?xml version='1.0'?>
+<methodResponse>
+<params>
+<param>
+<value><array><data>
+<value><struct>
+<member>
+<name>entry_mode</name>
+<value><nil/></value></member>
+<member>
+<name>reg_number</name>
+<value><string>123</string></value>
+</member>
+<member>
+<name>firstname</name>
+<value><string>Anna</string></value>
+</member>
+<member>
+<name>middlename</name>
+<value><nil/></value></member>
+<member>
+<name>current_session</name>
+<value><int>2004</int></value>
+</member>
+<member>
+<name>entry_session</name>
+<value><int>2004</int></value>
+</member>
+<member>
+<name>certcode</name>
+<value><string>CERT1</string></value>
+</member>
+<member>
+<name>matric_number</name>
+<value><string>234</string></value>
+</member>
+<member>
+<name>state</name>
+<value><string>created</string></value>
+</member>
+<member>
+<name>faccode</name>
+<value><string>fac1</string></value>
+</member>
+<member>
+<name>lastname</name>
+<value><string>Tester</string></value>
+</member>
+<member>
+<name>student_id</name>
+<value><string>K1000000</string></value>
+</member>
+<member>
+<name>depcode</name>
+<value><string>dep1</string></value>
+</member>
+</struct></value>
+</data></array></value>
+</param>
+</params>
+</methodResponse>
+"""
+        xmlout = self.XMLRPC_post(REQUEST_XML)
+        self.assertEqual(xmlout, RESPONSE_XML)
+        return
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/webservices.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/webservices.py	(revision 17769)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/webservices.py	(revision 17787)
@@ -533,2 +533,48 @@
               )
         return hitlist
+
+    # Data requested by the WAeUP team
+
+    @grok.require('waeup.xmlrpc')
+    def get_student_base_data(self,
+            current_session=None, current_level=None, certcode=None,
+            current_mode=None, depcode=None, p_session=None):
+        """Returns bursary data of a subset of students.
+        """
+        if not current_session:
+            current_session = None
+        if not current_level:
+            current_level = None
+        if not depcode:
+            depcode = None
+        if not certcode:
+            certcode = None
+        if not current_mode:
+            current_mode = None
+        hitlist = []
+        cat = queryUtility(ICatalog, name='students_catalog')
+        results = cat.searchResults(
+                current_session=(current_session, current_session),
+                current_level=(current_level, current_level),
+                certcode=(certcode, certcode),
+                current_mode=(current_mode, current_mode),
+                depcode=(depcode, depcode),
+                )
+        for student in results:
+            hitlist.append(dict(
+                student_id=student.student_id,
+                matric_number=student.matric_number,
+                reg_number=student.reg_number,
+                firstname=student.firstname,
+                middlename=student.middlename,
+                lastname=student.lastname,
+                state=student.state,
+                current_session=student.current_session,
+                entry_session=student.entry_session,
+                entry_mode=student.entry_mode,
+                faccode=student.faccode,
+                depcode=student.depcode,
+                certcode=student.certcode,
+                )
+            )
+        return hitlist
