Index: main/waeup.custom/trunk/src/waeup/custom/students/batching.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/students/batching.py	(revision 7525)
+++ main/waeup.custom/trunk/src/waeup/custom/students/batching.py	(revision 7525)
@@ -0,0 +1,34 @@
+## $Id$
+##
+## Copyright (C) 2012 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""Batch processing components for student objects.
+
+Batch processors eat CSV files to add, update or remove large numbers
+of certain kinds of objects at once.
+
+Here we define the processors for students specific objects like
+students, studycourses, payment tickets and accommodation tickets.
+"""
+from waeup.custom.students.interfaces import (
+    IStudent, 
+    )
+from waeup.sirp.students.batching import StudentProcessor
+
+class StudentProcessor(StudentProcessor):
+    """A batch processor for IStudent objects.
+    """
+    iface = IStudent
Index: main/waeup.custom/trunk/src/waeup/custom/students/browser.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/students/browser.py	(revision 7505)
+++ main/waeup.custom/trunk/src/waeup/custom/students/browser.py	(revision 7525)
@@ -18,6 +18,15 @@
 import grok
 from zope.formlib.textwidgets import BytesDisplayWidget
-from waeup.custom.students.interfaces import IStudent, IStudentPersonal
-from waeup.sirp.students.browser import StudentPersonalDisplayFormPage
+from waeup.sirp.widgets.datewidget import (
+    FriendlyDateWidget, FriendlyDateDisplayWidget
+    )
+from waeup.custom.students.interfaces import (
+    IStudent, IStudentPersonal, IStudentClearance, IStudentClearanceEdit
+    )
+from waeup.sirp.students.browser import (
+    StudentPersonalDisplayFormPage, StudentPersonalManageFormPage,
+    StudentClearanceManageFormPage, StudentClearanceEditFormPage,
+    StudentClearanceDisplayFormPage
+    )
 
 class StudentPersonalDisplayFormPage(StudentPersonalDisplayFormPage):
@@ -28,3 +37,31 @@
     form_fields['perm_address'].custom_widget = BytesDisplayWidget
 
+class StudentPersonalManageFormPage(StudentPersonalManageFormPage):
+    """ Page to edit student clearance data
+    """
+    grok.context(IStudent)
+    form_fields = grok.AutoFields(IStudentPersonal)
 
+class StudentClearanceDisplayFormPage(StudentClearanceDisplayFormPage):
+    """ Page to display student clearance data
+    """
+    grok.context(IStudent)
+    form_fields = grok.AutoFields(IStudentClearance).omit('clearance_locked')
+    form_fields['date_of_birth'].custom_widget = FriendlyDateDisplayWidget('le')
+
+class StudentClearanceManageFormPage(StudentClearanceManageFormPage):
+    """ Page to edit student clearance data
+    """
+    grok.context(IStudent)
+    form_fields = grok.AutoFields(IStudentClearance)
+    form_fields['date_of_birth'].custom_widget = FriendlyDateWidget('le-year')
+
+class StudentClearanceEditFormPage(StudentClearanceEditFormPage):
+    """ View to edit student clearance data by student
+    """
+    grok.context(IStudent)
+    form_fields = grok.AutoFields(
+        IStudentClearanceEdit).omit('clearance_locked')
+    form_fields['date_of_birth'].custom_widget = FriendlyDateWidget('le-year')
+
+
Index: main/waeup.custom/trunk/src/waeup/custom/students/interfaces.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/students/interfaces.py	(revision 7505)
+++ main/waeup.custom/trunk/src/waeup/custom/students/interfaces.py	(revision 7525)
@@ -21,4 +21,5 @@
     IStudentBase,IStudentClearance,IStudentPersonal,IStudentNavigation,
     )
+from waeup.sirp.students.vocabularies import lgas_vocab, nats_vocab
 
 class IStudentPersonal(IStudentPersonal):
@@ -46,5 +47,5 @@
     date_of_birth = schema.Date(
         title = u'Date of Birth',
-        required = True,
+        required = False,
         )
 
@@ -59,4 +60,17 @@
         required = False,
         readonly = True,
+        )
+
+    nationality = schema.Choice(
+        source = nats_vocab,
+        title = u'Nationality',
+        default = 'nigeria',
+        required = False,
+        )
+
+    lga = schema.Choice(
+        source = lgas_vocab,
+        title = u'State/LGA',
+        required = False,
         )
 
Index: main/waeup.custom/trunk/src/waeup/custom/students/student.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/students/student.py	(revision 7505)
+++ main/waeup.custom/trunk/src/waeup/custom/students/student.py	(revision 7525)
@@ -42,12 +42,2 @@
 # set.
 Student = attrs_to_fields(Student)
-
-class StudentFactory(StudentFactory):
-    """A factory for students.
-    """
-
-    def __call__(self, *args, **kw):
-        return Student()
-
-    def getInterfaces(self):
-        return implementedBy(Student)
