Index: waeup/branches/ulif-rewrite/src/waeup/student/interfaces.py
===================================================================
--- waeup/branches/ulif-rewrite/src/waeup/student/interfaces.py	(revision 3947)
+++ waeup/branches/ulif-rewrite/src/waeup/student/interfaces.py	(revision 3947)
@@ -0,0 +1,14 @@
+##
+## interfaces.py
+from zope.interface import Interface
+from zope import schema
+
+class IStudent(Interface):
+    """Representation of a student.
+    """
+    name = schema.TextLine(
+        title = u'Name of student',
+        default = u'Nobody',
+        required = True,
+        )
+
Index: waeup/branches/ulif-rewrite/src/waeup/student/student.py
===================================================================
--- waeup/branches/ulif-rewrite/src/waeup/student/student.py	(revision 3947)
+++ waeup/branches/ulif-rewrite/src/waeup/student/student.py	(revision 3947)
@@ -0,0 +1,73 @@
+import grok
+from grok import index
+from waeup.students.interfaces import IStudent
+
+def fromCsv(a):
+    #Factory method
+    student = Student("Dummy")
+    student.entry_mode, student.end_level, student.name, student.jamb_reg_no, student.level, student.id, student.lga, student.entry_session, student.matric_no, student.sex, student.phone, student.session, student.course, student.mode, student.faculty, student.department, student.verdict, student.review_state,  student.perm_address, student.email = a
+    return student
+
+class Student(grok.Model):
+    """This is a student record.
+    """
+    grok.implements(IStudent)
+
+    #TODO: REFACTOR TO SCHEMA
+    fields = [   "entry_mode",
+                 "end_level",
+                 "name",
+                 "jamb_reg_no",
+                 "level",
+                 "id",
+                 "lga",
+                 "entry_session",
+                 "matric_no",
+                 "sex",
+                 "phone",
+                 "session",
+                 "course",
+                 "mode",
+                 "faculty",
+                 "department",
+                 "verdict",
+                 "review_state",
+                 "perm_address",
+                 "email"
+            ]
+
+    def __init__(self, name=None):
+        """
+        TODO: REFACTOR TO IMPORT METHOD
+        Fields:
+                 entry_mode,
+                 end_level,
+                 name,
+                 jamb_reg_no,
+                 level,
+                 id,
+                 lga,
+                 entry_session,
+                 matric_no,
+                 sex,
+                 phone,
+                 session,
+                 course,
+                 mode,
+                 faculty,
+                 department,
+                 verdict,
+                 review_state,
+                 perm_address,
+                 email
+
+        """
+        self.name = name
+        
+
+    def getCsv(self):
+        #return self.entry_mode, self.end_level, self.name, self.jamb_reg_no, self.level, self.id, self.lga, self.entry_session, self.matric_no, self.sex, self.phone, self.session, self.course, self.mode, self.faculty, self.department, self.verdict, self.review_state,  self.perm_address, self.email
+        return [getattr(self, field, u"") for field in self.fields]
+
+
+grok.global_utility(Student, provides=IStudent)
Index: waeup/branches/ulif-rewrite/src/waeup/student/student.txt
===================================================================
--- waeup/branches/ulif-rewrite/src/waeup/student/student.txt	(revision 3947)
+++ waeup/branches/ulif-rewrite/src/waeup/student/student.txt	(revision 3947)
@@ -0,0 +1,17 @@
+waeup_ng.student
+****************
+
+:Test-Layer: nounit
+
+We can create students::
+
+  >>> from waeup_ng.student import Student
+  >>> s = Student(name='Foo Bar')
+  >>> s
+  <waeup_ng.student.Student object at 0x...>
+
+Students have a name::
+
+  >>> s.name
+  'Mr. Nobody'
+
Index: waeup/branches/ulif-rewrite/src/waeup/student/studentcontainer.py
===================================================================
--- waeup/branches/ulif-rewrite/src/waeup/student/studentcontainer.py	(revision 3947)
+++ waeup/branches/ulif-rewrite/src/waeup/student/studentcontainer.py	(revision 3947)
@@ -0,0 +1,49 @@
+import grok
+import os
+
+from waeup.basecontainer import BaseContainer
+from waeup.interfaces import IStudentContainer
+from student import Student, fromCsv
+from waeup.utils import importexport as csv
+
+class StudentContainer(BaseContainer):
+    """
+    The node containing the student models
+    """
+
+    grok.implements(IStudentContainer)
+    
+    name = u"Students"
+    childClass = Student
+    specialActions = [u"import", u"export"]    
+
+
+    
+class Import(grok.View):
+    def render(self):
+        #XXX TODO: Make import form to choose csv-file
+        t = [0]
+        src = os.path.join(os.path.dirname(__file__), '..', 'tests',
+                           'TestData','Students.csv')
+        inputfile = file(src, "r")
+        num = 0
+        headers, rows = csv.readFile(inputfile)
+        for i in rows:
+             s = fromCsv(i)
+             self.context[str(num)] = s
+             num += 1
+             if num > 100:
+                 break
+        return "%s new Students added in %s" % (num, t[0])
+
+class Export(grok.View):    
+    def render(self):
+        #XXX TODO: Make export form to choose csv-file
+        t = [0]
+        result = []
+        for s in self.context.values():
+             result.append(s.getCsv())
+        csv.writeFile(result)
+        return "yeah %s" % t[0]
+
+grok.global_utility(StudentContainer, provides=IStudentContainer)
