Index: main/waeup.uniben/trunk/src/waeup/uniben/applicants/browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/applicants/browser.py	(revision 8506)
+++ main/waeup.uniben/trunk/src/waeup/uniben/applicants/browser.py	(revision 8519)
@@ -37,5 +37,8 @@
 from waeup.uniben.applicants.interfaces import (
     IPGApplicant, IUGApplicant, IPGApplicantEdit, IUGApplicantEdit,
-    ICustomApplicantOnlinePayment)
+    ICustomApplicantOnlinePayment,
+    UG_OMIT_DISPLAY_FIELDS, PG_OMIT_DISPLAY_FIELDS,
+    UG_OMIT_MANAGE_FIELDS, PG_OMIT_MANAGE_FIELDS,
+    UG_OMIT_EDIT_FIELDS, PG_OMIT_EDIT_FIELDS)
 from waeup.uniben.interfaces import MessageFactory as _
 
@@ -65,9 +68,11 @@
         target = getattr(self.context.__parent__, 'prefix', None)
         if target is not None and target.startswith('pg'):
-            form_fields = grok.AutoFields(IPGApplicant).omit(
-                'locked', 'course_admitted')
+            form_fields = grok.AutoFields(IPGApplicant)
+            for field in PG_OMIT_DISPLAY_FIELDS:
+                form_fields = form_fields.omit(field)
         else:
-            form_fields = grok.AutoFields(IUGApplicant).omit(
-                'locked', 'course_admitted')
+            form_fields = grok.AutoFields(IUGApplicant)
+            for field in UG_OMIT_DISPLAY_FIELDS:
+                form_fields = form_fields.omit(field)
         return form_fields
 
@@ -80,9 +85,11 @@
         target = getattr(self.context.__parent__, 'prefix', None)
         if target is not None and target.startswith('pg'):
-            form_fields = grok.AutoFields(IPGApplicant).omit(
-                'locked', 'course_admitted', 'password')
+            form_fields = grok.AutoFields(IPGApplicant)
+            for field in PG_OMIT_DISPLAY_FIELDS:
+                form_fields = form_fields.omit(field)
         else:
-            form_fields = grok.AutoFields(IUGApplicant).omit(
-                'locked', 'course_admitted', 'password')
+            form_fields = grok.AutoFields(IUGApplicant)
+            for field in UG_OMIT_DISPLAY_FIELDS:
+                form_fields = form_fields.omit(field)
         return form_fields
 
@@ -96,6 +103,10 @@
         if target is not None and target.startswith('pg'):
             form_fields = grok.AutoFields(IPGApplicant)
+            for field in PG_OMIT_MANAGE_FIELDS:
+                form_fields = form_fields.omit(field)
         else:
             form_fields = grok.AutoFields(IUGApplicant)
+            for field in UG_OMIT_MANAGE_FIELDS:
+                form_fields = form_fields.omit(field)
         form_fields['student_id'].for_display = True
         form_fields['applicant_id'].for_display = True
@@ -110,13 +121,11 @@
         target = getattr(self.context.__parent__, 'prefix', None)
         if target is not None and target.startswith('pg'):
-            form_fields = grok.AutoFields(IPGApplicantEdit).omit(
-                'locked', 'course_admitted', 'student_id',
-                'screening_score', 'screening_venue'
-                )
+            form_fields = grok.AutoFields(IPGApplicantEdit)
+            for field in PG_OMIT_EDIT_FIELDS:
+                form_fields = form_fields.omit(field)
         else:
-            form_fields = grok.AutoFields(IUGApplicantEdit).omit(
-                'locked', 'course_admitted', 'student_id',
-                'screening_score'
-                )
+            form_fields = grok.AutoFields(IUGApplicantEdit)
+            for field in UG_OMIT_EDIT_FIELDS:
+                form_fields = form_fields.omit(field)
         form_fields['applicant_id'].for_display = True
         form_fields['reg_number'].for_display = True
Index: main/waeup.uniben/trunk/src/waeup/uniben/applicants/interfaces.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/applicants/interfaces.py	(revision 8506)
+++ main/waeup.uniben/trunk/src/waeup/uniben/applicants/interfaces.py	(revision 8519)
@@ -32,7 +32,20 @@
 from waeup.uniben.payments.interfaces import ICustomOnlinePayment
 
+UG_OMIT_DISPLAY_FIELDS = ('locked', 'course_admitted', 'password')
+UG_OMIT_MANAGE_FIELDS = ()
+UG_OMIT_EDIT_FIELDS = UG_OMIT_MANAGE_FIELDS + ('locked', 'course_admitted',
+    'student_id', 'screening_score', 'screening_venue')
+
+PG_OMIT_DISPLAY_FIELDS = ('locked', 'course_admitted', 'password')
+PG_OMIT_MANAGE_FIELDS = ()
+PG_OMIT_EDIT_FIELDS = PG_OMIT_MANAGE_FIELDS + ('locked', 'course_admitted',
+    'student_id', 'screening_score', 'screening_venue')
+
 class IUGApplicant(IApplicantBaseData):
     """An undergraduate applicant.
 
+    This interface defines the least common multiple of all fields
+    in ug application forms. In customized forms, fields can be excluded by
+    adding them to the UG_OMIT* tuples.
     """
 
@@ -58,4 +71,7 @@
     """A postgraduate applicant.
 
+    This interface defines the least common multiple of all fields
+    in pg application forms. In customized forms, fields can be excluded by
+    adding them to the PG_OMIT* tuples.
     """
 
Index: main/waeup.uniben/trunk/src/waeup/uniben/applicants/tests.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/applicants/tests.py	(revision 8506)
+++ main/waeup.uniben/trunk/src/waeup/uniben/applicants/tests.py	(revision 8519)
@@ -123,5 +123,5 @@
         self.browser.open(pgapplicant_path + '/application_slip.pdf')
         self.assertEqual(self.browser.headers['Status'], '200 Ok')
-        # If we lool at the applicant in the ug container,
+        # If we view the applicant in the ug container,
         # the employer field doesn't appear
         ugapplicant_path = ('http://localhost/app/applicants/app2011/%s'
