Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/browser.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/browser.py	(revision 16275)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/browser.py	(revision 16276)
@@ -55,5 +55,5 @@
     ICustomPGApplicantEdit, ICustomUGApplicantEdit,
     ICustomApplicantOnlinePayment, ICustomApplicantRefereeReport,
-    ITranscriptApplicant
+    ITranscriptApplicant, ICustomApplicantRegisterUpdate
     )
 from kofacustom.iuokada.interfaces import MessageFactory as _
@@ -369,4 +369,18 @@
         return form_fields
 
+class CustomApplicantRegistrationPage(ApplicantRegistrationPage):
+    """Captcha'd registration page for applicants.
+    """
+    @property
+    def form_fields(self):
+        form_fields = None
+        if self.context.mode == 'update':
+            form_fields = grok.AutoFields(ICustomApplicantRegisterUpdate).select(
+                'lastname','reg_number','email')
+        else: #if self.context.mode == 'create':
+            form_fields = grok.AutoFields(ICustomUGApplicant).select(
+                'firstname', 'middlename', 'lastname', 'email', 'phone')
+        return form_fields
+
 class RefereeReportAddFormPage(RefereeReportAddFormPage):
     """Add-form to add an referee report. This form
Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py	(revision 16275)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/interfaces.py	(revision 16276)
@@ -36,5 +36,6 @@
     nats_vocab, GenderSource, StudyLevelSource)
 from waeup.kofa.applicants.interfaces import (
-    contextual_reg_num_source, IApplicantBaseData, IApplicantRefereeReport)
+    contextual_reg_num_source, IApplicantBaseData, IApplicantRefereeReport,
+    contextual_email_source, IApplicantRegisterUpdate)
 from waeup.kofa.refereeentries import RefereeEntryField
 from kofacustom.nigeria.applicants.interfaces import (
@@ -144,4 +145,11 @@
     """
 
+    email = TextLineChoice(
+        title = _(u'Email Address Test'),
+        required = False,
+        constraint=validate_email,
+        source = contextual_email_source,
+        )
+
     subtype = schema.Choice(
         title = _(u'Application Subtype'),
@@ -379,4 +387,11 @@
     adding them to the PG_OMIT* tuples.
     """
+
+    email = TextLineChoice(
+        title = _(u'Email Address Test'),
+        required = False,
+        constraint=validate_email,
+        source = contextual_email_source,
+        )
 
     sponsor = schema.Choice(
@@ -603,8 +618,9 @@
         required = True,
         )
-    email = schema.ASCIILine(
-        title = _(u'Email Address'),
-        required = True,
+    email = TextLineChoice(
+        title = _(u'Email Address Test'),
+        required = False,
         constraint=validate_email,
+        source = contextual_email_source,
         )
     date_of_birth = FormattedDate(
@@ -638,8 +654,9 @@
         required = True,
         )
-    email = schema.ASCIILine(
-        title = _(u'Email Address'),
-        required = True,
+    email = TextLineChoice(
+        title = _(u'Email Address Test'),
+        required = False,
         constraint=validate_email,
+        source = contextual_email_source,
         )
     date_of_birth = FormattedDate(
@@ -656,4 +673,17 @@
     'phone'].order =  ICustomPGApplicantEdit['email'].order
 
+class ICustomApplicantRegisterUpdate(IApplicantRegisterUpdate):
+    """This is a representation of an applicant for first-time registration.
+    This interface is used when applicants use the registration page to
+    update their records.
+    """
+
+    email = TextLineChoice(
+        title = _(u'Email Address Test'),
+        required = False,
+        constraint=validate_email,
+        source = contextual_email_source,
+        )
+
 class ICustomApplicantOnlinePayment(INigeriaApplicantOnlinePayment):
     """An applicant payment via payment gateways.
