Index: main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser.py
===================================================================
--- main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser.py	(revision 10787)
+++ main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser.py	(revision 10788)
@@ -21,8 +21,40 @@
 from waeup.kofa.applicants.browser import (
     ApplicantRegistrationPage, ApplicantsContainerPage)
+from waeup.kofa.applicants.interfaces import IApplicant, IApplicantEdit
 from kofacustom.nigeria.applicants.browser import (
     NigeriaApplicantDisplayFormPage,
-    NigeriaPDFApplicationSlip)
+    NigeriaPDFApplicationSlip,
+    ApplicantDisplayFormPage,
+    ApplicantManageFormPage,
+    ApplicantEditFormPage)
 
 from kofacustom.ekodisco.interfaces import MessageFactory as _
 
+class CustomApplicantDisplayFormPage(ApplicantDisplayFormPage):
+    """A display view for applicant data.
+    """
+    grok.template('applicantdisplaypage')
+
+    form_fields = grok.AutoFields(IApplicant).omit(
+        'locked', 'course_admitted', 'password', 'suspended',
+        'course2', 'notice', 'student_id')
+
+class CustomApplicantManageFormPage(ApplicantManageFormPage):
+    """A full edit view for applicant data.
+    """
+    grok.template('applicanteditpage')
+
+    form_fields = grok.AutoFields(IApplicant).omit('course2', 'notice', 'student_id')
+    form_fields['applicant_id'].for_display = True
+
+class CustomApplicantEditFormPage(ApplicantEditFormPage):
+    """An applicant-centered edit view for applicant data.
+    """
+    grok.template('applicanteditpage')
+
+    form_fields = grok.AutoFields(IApplicantEdit).omit(
+        'locked', 'course_admitted', 'student_id',
+        'suspended', 'course2', 'notice'
+        )
+    form_fields['applicant_id'].for_display = True
+    form_fields['reg_number'].for_display = True
Index: main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicantdisplaypage.pt
===================================================================
--- main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicantdisplaypage.pt	(revision 10788)
+++ main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicantdisplaypage.pt	(revision 10788)
@@ -0,0 +1,65 @@
+<h2 i18n:domain="waeup.kofa">
+  ...
+  <span tal:replace="context/translated_state">APPLICATIONSTATE
+  </span>
+  <span tal:omit-tag=""
+    i18n:translate="" tal:condition="context/suspended">(account suspended)
+  </span>
+  ...
+</h2>
+
+<div class="workflow">
+  <div tal:repeat="msg context/history/messages">
+    <span tal:replace="msg">MESSAGE</span><br />
+  </div>
+</div>
+
+<img src="" height="180px" tal:attributes="src view/passport_url" />
+
+<table i18n:domain="waeup.kofa" class="form-table">
+  <tbody>
+    <tal:widgets content="structure provider:widgets" />
+    <tr tal:condition="view/getCourseAdmitted">
+      <td class="fieldname" i18n:translate="">
+          Assigned Contract:
+      </td>
+      <td>
+        <span tal:replace="structure view/getCourseAdmitted" />
+      </td>
+    </tr>
+    <tr>
+      <td class="fieldname" i18n:translate="">
+          Password:
+      </td>
+      <td>
+          <tal:password replace="view/hasPassword" />
+      </td>
+    <tr>
+  </tbody>
+</table>
+<h3  i18n:domain="waeup.kofa" i18n:translate="">
+    Registration Fee Payment Tickets
+</h3>
+<table i18n:domain="waeup.kofa">
+  <thead>
+    <tr>
+      <th i18n:translate="">Payment Id</th>
+      <th i18n:translate="">Creation Date</th>
+      <th i18n:translate="">Payment Date</th>
+      <th i18n:translate="">Category</th>
+      <th i18n:translate="">Item</th>
+      <th i18n:translate="">State</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr tal:repeat="value context/values">
+      <td> <a tal:attributes="href value/__name__">
+      <span tal:content="value/p_id">PID</span></a></td>
+      <td tal:content="python: layout.formatDatetime(value.creation_date)">CREATION DATE</td>
+      <td tal:content="python: layout.formatDatetime(value.payment_date)">PAYMENT DATE</td>
+      <td tal:content ="value/category">CATEGORY</td>
+      <td tal:content ="value/display_item">ITEM</td>
+      <td tal:content ="value/p_state_title">STATE</td>
+    </tr>
+  </tbody>
+</table>
Index: main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicanteditpage.pt
===================================================================
--- main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicanteditpage.pt	(revision 10788)
+++ main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/browser_templates/applicanteditpage.pt	(revision 10788)
@@ -0,0 +1,124 @@
+<form action="." tal:attributes="action request/URL" method="post"
+      i18n:domain="waeup.kofa" enctype="multipart/form-data"
+      autocomplete="off">
+
+  <h2 i18n:domain="waeup.kofa">
+    ...
+    <span tal:replace="context/translated_state">APPLICATIONSTATE
+    </span>
+    <span tal:omit-tag=""
+      i18n:translate="" tal:condition="context/suspended">(account suspended)
+    </span>
+    ...
+  </h2>
+
+  <div class="workflow">
+    <div tal:repeat="msg context/history/messages">
+      <span tal:replace="msg">MESSAGE</span><br />
+    </div>
+  </div>
+
+  <table class="form-table">
+    <tbody>
+      <tal:widgets content="structure provider:widgets" />
+      <tr>
+        <td class="fieldname" i18n:translate="">
+          Passport Photo:
+        </td>
+        <td>
+          <img src="passport.jpg" height="180px" /><br />
+          <input type="file" name="form.passport" />
+          <br />
+          <span i18n:translate="">
+            Max. file size:
+          </span>
+          <span tal:replace="view/max_upload_size">10 KB</span>
+      </tr>
+      <tr tal:condition="view/manage_applications">
+        <td class="fieldname" i18n:translate="">Password:</td>
+        <td>
+          <input name="password" type="password"  />
+        </td>
+      </tr>
+      <tr tal:condition="view/manage_applications">
+        <td class="fieldname" i18n:translate="">Retype Password:</td>
+        <td>
+          <input name="control_password" type="password" />
+        </td>
+      </tr>
+      <tr tal:condition="view/manage_applications">
+        <td class="fieldname" i18n:translate="">Application Transition:</td>
+        <td>
+          <select id="transition" name="transition">
+            <option tal:repeat="transition view/getTransitions"
+                    tal:attributes="value transition/name">
+              <span tal:replace="transition/title">TRANSITIONTITLE</span>
+            </option>
+          </select>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+
+  <div tal:condition="not: view/manage_applications">
+    <input id="confirm_passport" name="confirm_passport"
+           type="checkbox" value="True"/>
+    <span i18n:translate="">
+    I confirm that the Passport Photograph uploaded on this form is a
+    true picture of me.
+    </span>
+  </div>
+  <br />
+
+  <div tal:condition="view/availableActions">
+    <span tal:repeat="action view/actions"
+          tal:omit-tag="">
+      <input tal:condition="python:action.label in view.display_actions[0]"
+             tal:replace="structure action/render"/>
+    </span>
+  </div>
+
+  <br /><br />
+  <h3 i18n:translate="">
+      Registration Fee Payment Tickets
+  </h3>
+
+  <table>
+    <thead>
+    <tr>
+      <th>&nbsp;</th>
+      <th i18n:translate="">Payment Id</th>
+      <th i18n:translate="">Creation Date</th>
+      <th i18n:translate="">Payment Date</th>
+      <th i18n:translate="">Category</th>
+      <th i18n:translate="">Item</th>
+      <th i18n:translate="">State</th>
+    </tr>
+    </thead>
+    <tbody>
+      <tr tal:repeat="cl context/values">
+         <td>
+          <input type="checkbox"
+    		 name="val_id"
+    		 tal:attributes="value cl/__name__"
+         tal:condition="python: not view.unremovable(cl)" />
+        </td>
+        <td> <a tal:attributes="href cl/__name__">
+        <span tal:content="cl/p_id">PID</span></a></td>
+        <td tal:content="python: layout.formatDatetime(cl.creation_date)">CREATION DATE</td>
+        <td tal:content="python: layout.formatDatetime(cl.payment_date)">PAYMENT DATE</td>
+      <td tal:content ="cl/category">CATEGORY</td>
+      <td tal:content ="cl/display_item">ITEM</td>
+      <td tal:content ="cl/p_state_title">STATE</td>
+      </tr>
+    </tbody>
+  </table>
+
+  <div tal:condition="view/availableActions">
+    <span tal:repeat="action view/actions"
+          tal:omit-tag="">
+      <input tal:condition="python:action.label in view.display_actions[1]"
+             tal:replace="structure action/render"/>
+    </span>
+  </div>
+</form>
Index: main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/utils.py
===================================================================
--- main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/utils.py	(revision 10787)
+++ main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/applicants/utils.py	(revision 10788)
@@ -35,2 +35,5 @@
       'fossil': ['Fossil Energy', 'FS'],
       }
+
+    SEPARATORS_DICT = {
+      }
Index: main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 10787)
+++ main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 10788)
@@ -175,4 +175,7 @@
 msgstr "Assigned Contract:"
 
+msgid "Admitted Course of Study"
+msgstr "Assigned Contract"
+
 msgid "1st Choice Course of Study"
 msgstr "Desired Contract"
