Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 8471)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 8472)
@@ -412,6 +412,5 @@
     @property
     def form_fields(self):
-        cm = getattr(self.context,'current_mode', None)
-        if cm is not None and cm.startswith('pg'):
+        if self.context.is_postgrad:
             form_fields = grok.AutoFields(IPGStudentClearance).omit('clearance_locked')
         else:
@@ -434,6 +433,5 @@
     @property
     def form_fields(self):
-        cm = getattr(self.context,'current_mode', None)
-        if cm is not None and cm.startswith('pg'):
+        if self.context.is_postgrad:
             form_fields = grok.AutoFields(IPGStudentClearance).omit('clearance_locked')
         else:
@@ -478,6 +476,5 @@
     @property
     def form_fields(self):
-        cm = getattr(self.context,'current_mode', None)
-        if cm is not None and cm.startswith('pg'):
+        if self.context.is_postgrad:
             form_fields = grok.AutoFields(IPGStudentClearance)
         else:
@@ -1621,6 +1618,5 @@
     @property
     def form_fields(self):
-        cm = getattr(self.context,'current_mode', None)
-        if cm is not None and cm.startswith('pg'):
+        if self.context.is_postgrad:
             form_fields = grok.AutoFields(IPGStudentClearance).omit('clearance_locked')
         else:
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/student.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/student.py	(revision 8471)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/student.py	(revision 8472)
@@ -133,5 +133,11 @@
         if certificate is not None:
             return certificate.study_mode
-        return
+        return None
+
+    @property
+    def is_postgrad(self):
+        is_postgrad = getattr(
+            self.get('studycourse', None), 'is_postgrad', False)
+        return is_postgrad
 
 # Set all attributes of Student required in IStudent as field
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py	(revision 8471)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/studycourse.py	(revision 8472)
@@ -48,5 +48,5 @@
             return True
         if self.getStudent().state == PAID \
-            and self.getStudent().current_mode.startswith('pg'):
+            and self.getStudent().is_postgrad:
             return True
         return False
@@ -105,4 +105,12 @@
         return
 
+    @property
+    def is_postgrad(self):
+        cert = getattr(self, 'certificate', None)
+        if cert is not None:
+            return cert.study_mode.startswith('pg')
+            #return cert.start_level == 999 or cert.end_level == 999
+        return False
+
 StudentStudyCourse = attrs_to_fields(StudentStudyCourse)
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8471)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8472)
@@ -1837,6 +1837,8 @@
         self.assertFalse('Employer' in self.browser.contents)
         # Now we change the study mode of the certificate and a different
-        # interface is used by clearance views
+        # interface is used by clearance views.
         self.certificate.study_mode = 'pg_ft'
+        # Invariants are not being checked here?!
+        self.certificate.end_level = 100
         self.browser.open(self.clearance_path)
         self.assertTrue('Employer' in self.browser.contents)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 8471)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 8472)
@@ -278,5 +278,5 @@
                 details['p_session'], details[
                     'p_level'] = self.getReturningData(student)
-            elif student.current_mode.startswith('pg') and student.state == PAID:
+            elif student.is_postgrad and student.state == PAID:
                 # Returning postgraduate students also pay for the next session
                 # but their level always remains the same.
