Index: WAeUP_SRP/branches/joachim-event-branch/PatchCPSUserFolderUserFolder.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/PatchCPSUserFolderUserFolder.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/PatchCPSUserFolderUserFolder.py	(revision 1558)
@@ -73,21 +73,26 @@
         if callable(real_object) and hasattr(real_object,'im_self'):
             real_object = real_object.im_self
+
         if hasattr(real_object,'portal_type') and\
                    real_object.portal_type not in ("Student","StudentClearance","StudentStudyLevel"):
             break
+
+        #from pdb import set_trace;set_trace()
+        # can be later simplified by replacing by students_catalog values - Henrik
+        # getattr works always because of acquisition ?! Henrik
         sc = getattr(real_object,'study_course',None)
         if sc is None:
             break
         sc_obj = sc.getContent()
-        res_sc = self.portal_catalog(portal_type="Certificate",
-                                     id = sc_obj.study_course)
-        if len(res_sc) != 1:
+        cert_id = sc_obj.study_course
+        res_cert = self.portal_catalog(id = cert_id)
+        if len(res_cert) != 1:
             break
-        cert_path = res_sc[0].getPath().split('/')
+        certificate_brain = res_cert[0]
+        certificate_obj = certificate_brain.getObject()
+        cert_path = certificate_brain.getPath().split('/')
         fac_id = cert_path[-4]
         dep_id = cert_path[-3]
-
-
-        # temporary sel-healing function
+        # temporary self-healing function
         # deprecated after reindexing the students_catalog
         student_id = self.getStudentId()
@@ -95,15 +100,24 @@
         if len(res) != 1:
             break
-        self.students_catalog.modifyRecord(id = student_id,
+        st_entry = res[0]
+        if st_entry.faculty != fac_id or\
+           st_entry.department != dep_id or\
+           st_entry.course != cert_id:
+               self.students_catalog.modifyRecord(id = student_id,
                                                 faculty = fac_id,
                                                 department = dep_id,
+                                                course = cert_id
                                                 )
-
-
-        res = self.portal_catalog(portal_type="Department",id=dep_id)
-        if len(res) != 1:
-            break
-        dynamic_roles = self.getRolesInContext(res[0].getObject())
-        for dr in ('ClearanceOfficer','CourseAdviser', 'SectionManager'):
+        if real_object.portal_type == "StudentStudyLevel":
+            context_obj = getattr(certificate_obj,real_object.getId())
+            allowed = ('CourseAdviser', 'SectionManager')
+        else:
+            res = self.portal_catalog(portal_type="Department",id=dep_id)
+            allowed = ('ClearanceOfficer', 'SectionManager')
+            if len(res) != 1:
+                break
+            context_obj = res[0].getObject()
+        dynamic_roles = self.getRolesInContext(context_obj)
+        for dr in allowed:
             if dr in dynamic_roles:
                 roles.append(dr)
Index: WAeUP_SRP/branches/joachim-event-branch/WAeUPTables.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/WAeUPTables.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/WAeUPTables.py	(revision 1558)
@@ -210,11 +210,47 @@
 
 class StudentsCatalog(WAeUPTable): ###(
+    security = ClassSecurityInfo()
 
     meta_type = 'WAeUP Students Catalog'
     name = "students_catalog"
     key = "id"
+    interesting_types = ('Student',
+                         'StudentApplication',
+                         'StudentCLearance',
+                         'StudentPersonal',
+                         'StudentStudyCourse',
+                         )
     def __init__(self):
         WAeUPTable.__init__(self, 'students_catalog')
 
+    security.declarePrivate('notify_event_listener')
+    def notify_event_listener(self,event_type,object,infos):
+        "listen for events"
+        pt = object.portal_type
+        mt = object.meta_type
+        students_catalog = self.students_catalog
+        #if pt not in self.interesting_types:
+        #    return
+        #print "%(pt)s\n %(event_type)s \n %(infos)s\n" % vars()
+        if not infos.has_key('rpath'):
+            return
+        if pt == 'Student' and event_type == "workflow":
+            pass
+        elif mt == 'StudentApplication':
+            if event_type not in ('sys_modify_object'):
+                return
+            print "%(pt)s\n %(event_type)s \n %(infos)s\n" % vars()
+            from pdb import set_trace;set_trace()
+            jamb_reg_no = getattr(object,'jamb_reg_no',None)
+            if jamb_reg_no is None:
+                return
+            student_id = infos['rpath'].split('/')[2]
+            student_entry = students_catalog(id = student_id)[0]
+            if student_entry.jamb_reg_no == jamb_reg_no:
+                return
+            students_catalog.modifyRecord(id = student_id,
+                                          jamb_reg_no = jamb_reg_no)
+        
+            
 
 InitializeClass(StudentsCatalog)
Index: WAeUP_SRP/branches/joachim-event-branch/Widgets.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/Widgets.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/Widgets.py	(revision 1558)
@@ -719,4 +719,12 @@
             err ='You are not a Student. PIN neither checked nor used.'
             s_logger.info('"%s","tried to use Scratchcard", "%s"' % (s_id,pin_str))
+        elif len(b) > 1 and b.find('-') > -1:
+            do = 0
+            err = 'PIN must not contain the "-"'
+            s_logger.info('"%s","Invalid PIN-Number, contains -"' % (s_id))
+        elif n.find('-') > -1:
+            do = 0
+            err = 'PIN must not contain the "-"'
+            s_logger.info('"%s","Invalid PIN-Number, contains -"' % (s_id))
         elif len(n) != 10:
             do = 0
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/accommodation.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/accommodation.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/accommodation.xml	(revision 1558)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
-<object name="portal_catalog" meta_type="WAeUP Table">
+<object name="portal_accommodation" meta_type="WAeUP Table">
  <column value="bed"/>
  <column value="bed_type"/>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/payments_catalog.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/payments_catalog.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/payments_catalog.xml	(revision 1558)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
-<object name="payments_catalog" meta_type="CMF Catalog">
+<object name="payments_catalog" meta_type="WAeUP Table">
  <column value="id"/>
  <column value="student_id"/>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/pumeresults.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/pumeresults.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/pumeresults.xml	(revision 1558)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
-<object name="portal_catalog" meta_type="WAeUP Table">
+<object name="portal_pumeresults" meta_type="WAeUP Table">
  <column value="jamb_reg_no"/>
  <column value="name"/>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/results_import.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/results_import.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/results_import.xml	(revision 1558)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
-<object name="portal_catalog" meta_type="CMF Catalog">
+<object name="results_import" meta_type="WAeUP Table">
  <column value="key"/>
  <column value="matric_no"/>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/returning_import.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/returning_import.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/returning_import.xml	(revision 1558)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
-<object name="portal_catalog" meta_type="CMF Catalog">
+<object name="returning_import" meta_type="WAeUP Table">
  <column value="matric_no"/>
  <column value="Entryregno"/>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/schemas/import_student_course_results.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/schemas/import_student_course_results.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/schemas/import_student_course_results.xml	(revision 1558)
@@ -6,3 +6,2 @@
  <field name="score" meta_type="CPS String Field"/>
 </object>
-
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/types/StudyLevel.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/types/StudyLevel.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/types/StudyLevel.xml	(revision 1558)
@@ -37,9 +37,15 @@
   <permission value="View"/>
  </action>
-   <action title="Add Course" action_id="new_entry" category="object"
-    condition_expr=""
-    url_expr="string:${object_url}/content_create?type_name=CertificateCourse"
-    visible="True">
-  <permission value="Modify portal content"/>
+  <action title="Add Course" action_id="new_entry" category="object"
+          condition_expr=""
+          url_expr="string:${object_url}/content_create?type_name=CertificateCourse"
+          visible="True">
+    <permission value="Modify portal content"/>
+  </action>
+  <action title="Delegate" action_id="localroles" category="object"
+          condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+          visible="True">
+    <permission value="Modify portal content"/>
  </action>
+
 </object>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/searchable_student_states.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/searchable_student_states.xml	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/searchable_student_states.xml	(revision 1558)
@@ -19,4 +19,6 @@
  <item key="clearance_requested" msgid="">clearance requested</item>
  <item key="cleared_and_validated" msgid="">cleared and validated</item>
+ <item key="courses_registered" msgid="">courses registered</item>
+ <item key="courses_validated" msgid="">courses validated</item>
  <item key="content_addable" msgid="">content addable</item>
 </object>
Index: WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/student_import_mode.xml
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/student_import_mode.xml	(revision 1558)
+++ WAeUP_SRP/branches/joachim-event-branch/profiles/default/vocabularies/student_import_mode.xml	(revision 1558)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="vocabulary.xsl"?>
+<object name="verdicts" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="" msgid=""></item>
+ <item key="adm_pt" msgid="">Admitted Parttime</item>
+ <item key="adm_ft" msgid="">Admitted Fulltime</item>
+ <item key="adm_dp" msgid="">Admitted Diploma</item>
+ <item key="adm_pg" msgid="">Admitted Postgraduate</item>
+ <item key="ret_pt" msgid="">Returning Parttime</item>
+ <item key="ret_ft" msgid="">Returning Fulltime</item>
+ <item key="ret_dp" msgid="">Returning Diploma</item>
+ <item key="defered" msgid=""></item>
+</object>
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/isCourseAdviser.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/isCourseAdviser.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/isCourseAdviser.py	(revision 1558)
@@ -16,4 +16,9 @@
 mtool = context.portal_membership
 roles = mtool.getAuthenticatedMember().getRolesInContext(context)
+<<<<<<< .working
+return str("CourseAdviser" in roles)
+=======
+return str("CourseAdviser" in roles)
 return "CourseAdviser" in roles
+>>>>>>> .merge-rechts.r1557
 
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/waeup_edit.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/waeup_edit.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_default/waeup_edit.py	(revision 1558)
@@ -42,5 +42,5 @@
 if is_valid:
     comments = REQUEST.get('comments')
-    context.cpsdocument_notify_modification(comments=comments)
+    #context.cpsdocument_notify_modification(comments=comments)
     if context.portal_type == "StudentStudyCourse":
         course = ds.get('study_course')
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/course_result_delete.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/course_result_delete.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/course_result_delete.py	(revision 1558)
@@ -18,7 +18,13 @@
 ret_url = here.absolute_url()
 
+message = ''
 if ids:
-    here.manage_delObjects(ids)
-    message = 'portal_status_message=psm_item(s)_deleted'
+    real_ids = []
+    for id in ids:
+        if context.hasObject(id):
+            real_ids.append(id)
+    if real_ids:
+        context.manage_delObjects(real_ids)
+        message = 'portal_status_message=psm_item(s)_deleted'
 else:
     message = 'portal_status_message=psm_select_at_least_one_document'
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/create_level.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/create_level.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/create_level.py	(revision 1558)
@@ -41,4 +41,10 @@
 elif in_progress == 'started':
     return
+
+if context.hasObject(current_level):
+    return
+    level = getattr(context,current_level)
+    return response.redirect("%s" % level.absolute_url())
+    
 context.invokeFactory('StudentStudyLevel',"%s" % current_level)
 level = getattr(context,"%s" % current_level)
@@ -101,3 +107,2 @@
 session.set('in_progress','finished')
 return
-return response.redirect("%s" % level.absolute_url())
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/getRetStudentStatistics.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/getRetStudentStatistics.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/getRetStudentStatistics.py	(revision 1558)
@@ -13,5 +13,5 @@
 """
 import logging
-logger = logging.getLogger('Student.Statistics')
+logger = logging.getLogger('Skins.getRetStudentStatistics')
 
 try:
@@ -21,20 +21,26 @@
 except:
     evalAdvancedQuery = None
-logger.info('"%s","invoked returning statistics"' % context.portal_membership.getAuthenticatedMember())
+logger.info('%s invoked returning statistics' % context.portal_membership.getAuthenticatedMember())
 l = []
 if not context.isStaff():
     return l
 dep = {}
-sum = 0
 dep['id'] = "All Faculties"
 
-#from Products.zdb import set_trace;set_trace()
 
-ret_res = context.portal_catalog(review_state ='returning')
-ret_ids = [r.getId for r in ret_res]
-ret = len(ret_res)
-dep['total'] = ret
+ret_res1 = context.portal_catalog(review_state = 'returning')
+ret_ids1 = [r.getId for r in ret_res1]
+total_ret = len(ret_ids1)
+
+ret_res2 = context.portal_catalog(review_state = ('school_fee_paid','courses_registered','courses_validated',))
+ret_ids2 = [r.getId for r in ret_res2]
+
+retquery = Ge('level','300') | (Eq('level','200') & Eq('entry_mode','UME'))
+ret_res3 = aq_students(retquery)
+ret_ids3 = [r.id for r in ret_res3]
 
 l.append(dep)
+sum_ret = 0
+sum_sfp = 0
 fs = context.portal_catalog(portal_type="Faculty")
 for fid in [f.getId for f in fs]:
@@ -45,18 +51,20 @@
     stud_ids = [r.id for r in stud_res]
     total = float(len(stud_res))
-
     if total == 0:
         continue
-
-    ret = len([s for s in stud_ids if s in ret_ids])
-    dep['returned'] = ret
-    sum += ret
-
-    if ret == 0:
-        continue
-
+    sfp = len([s for s in stud_ids if s in ret_ids2 and s in ret_ids3])
+    dep['sfp'] = sfp
+    ret = len([s for s in stud_ids if s in ret_ids1])
+    dep['ret'] = ret
+    sum_ret += ret
+    sum_sfp += sfp
+       
     l.append(dep)
 
-l[0]['sum'] = sum
+l[0]['ret'] = sum_ret
+l[0]['sfp'] = sum_sfp
+l[0]['total_ret'] = total_ret + sum_sfp
+l[0]['total_li'] = sum_ret + sum_sfp
+
 
 return l
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/get_searchable_student_states.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/get_searchable_student_states.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/get_searchable_student_states.py	(revision 1558)
@@ -23,4 +23,7 @@
     return [item for item in voc.items() if item[0].startswith('clear') or
                                          item[0] in ("all",)]
+elif "CourseAdvisers" in member.getGroups():
+    return [item for item in voc.items() if item[0].startswith('courses') or
+                                         item[0] in ("all",)]
 return voc.items()
 
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students.py	(revision 1558)
@@ -61,7 +61,9 @@
 user_info['faculties'] = []
 co_view = False
+ca_view = False
 faculties =  fget('faculties')
 departments = fget('departments')
-dep_str = fac_str = ''
+certificate_level = fget('certificate_level')
+dep_str = fac_str = certificate_level_str = ''
 if "ClearanceOfficers" in member.getGroups():
     state = "clearance_requested"
@@ -93,4 +95,21 @@
         user_info['departments'] = departments
         dep_str = " ".join(departments)
+elif "CourseAdvisers" in member.getGroups():
+    state = "courses_registered"
+    only_review = False
+    ca_view = True
+    if certificate_level:
+        #from Products.zdb import set_trace;set_trace()
+        certificate_level_str = certificate_level
+        certificate_level = certificate_level.split()
+    else:
+        query = In('portal_type',('StudyLevel',)) &\
+                 In('localUsersWithRoles', ("user:%s" % member,))
+        res = evalAdvancedQuery(query)
+        certificate_level = []
+        if res:
+            certificate_level = ['/'.join(f.getPath().split('/')[-2:]) for f in res]
+        user_info['certificate_level'] = certificate_level
+        certificate_level_str = " ".join(certificate_level)
 default = {'search_mode': 'student_id',
         'review_state': state,
@@ -106,4 +125,5 @@
                       faculties = fac_str,
                       departments = dep_str,
+                      certificate_level = certificate_level_str,
                       commit = False,
                       )
@@ -200,4 +220,22 @@
         end = DateTime().timeTime()
         logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
+elif ca_view:
+    only_review = False
+    with_review = True
+    if with_timer:
+        start = DateTime().timeTime()
+        logger.info('"%s","start 200"' % member)
+    courses = [cl.split('/')[0] for cl in certificate_level]
+    levels = [cl.split('/')[1] for cl in certificate_level]
+    query = In('course',courses) & In('level',levels)
+    res = aq_students(query)
+    if with_timer:
+        end = DateTime().timeTime()
+        logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
+        start = DateTime().timeTime()
+    search_set = [r.id for r in res]
+    if with_timer:
+        end = DateTime().timeTime()
+        logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
 if with_timer:
     logger.info('"%s","start 300"' % member)
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students_form.pt
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students_form.pt	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/search_students_form.pt	(revision 1558)
@@ -35,6 +35,4 @@
       </span>
       </strong>
-     
-              
         <h3> Search Student Section</h3><br />
           You are logged in as member <span tal:replace="info/member|nothing" /> 
@@ -45,4 +43,8 @@
           <span tal:condition="info/departments|nothing" tal:omit-tag="">
             and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
+          <span tal:condition="info/certificate_level|nothing" tal:omit-tag="">
+            who is CourseAdviser for 
+            <span tal:repeat="cl info/certificate_level" tal:content="cl" />
+          </span>
           <br /><br />
         <span tal:replace="structure rendered" />
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/statistics_ret_view.pt
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/statistics_ret_view.pt	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/statistics_ret_view.pt	(revision 1558)
@@ -24,9 +24,15 @@
       <h3>Returning Student Statistics</h3>
       <br />      
+      <span tal:content="python:departments[0]['total_ret']" /> 
+      returning student records have been imported. 
+      <span tal:content="python:departments[0]['total_li']" /> returning students 
+      have logged in.
+      <br /><br />
       <span tal:condition="not:isAnon">
         <table>
           <tr class="odd ajaxtd">
             <th >Faculty</th>
-            <th align="right">Returning</th>
+            <th align="right">RET</th>
+            <th align="right">SFP</th>
           </tr>
           <tr tal:define="d python:departments[0]"
@@ -34,5 +40,8 @@
               <td width="80px">All Faculties</td>
               <td width="80px" align="right"> 
-                <span tal:content="d/sum" /> of <span tal:content="d/total" />
+                <span tal:content="d/ret" />
+              </td>   
+              <td width="80px" align="right"> 
+                <span tal:content="d/sfp" />
               </td>              
           </tr>
@@ -41,9 +50,16 @@
               <td width="80px"> <span tal:content="d/id" /> </td>
               <td width="80px" align="right"> 
-                <span tal:content="d/returned " />
-              </td>              
+                <span tal:content="d/ret" />
+              </td>       
+              <td width="80px" align="right"> 
+                <span tal:content="d/sfp" />
+              </td>                              
           </tr>
         </table>
         <br />
+        <table>
+        <tr><td>RET:</td> <td>Returning students who only logged in</td></tr>
+        <tr><td>SFP:</td> <td>Returning students who paid their school fee</td></tr>
+        </table>        
       </span>
       </span>
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/students_index.py
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/students_index.py	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/students_index.py	(revision 1558)
@@ -23,5 +23,6 @@
 students_url = "%s/campus/students" % (context.portal_url())
 
-if "ClearanceOfficers" in member.getGroups():
+if "ClearanceOfficers" in member.getGroups() or\
+   "CourseAdvisers" in member.getGroups():
     return redirect("%s/search_students" % context.portal_url())
 if context.isSectionOfficer():
Index: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/study_level_view.pt
===================================================================
--- WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/study_level_view.pt	(revision 1555)
+++ WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/study_level_view.pt	(revision 1558)
@@ -63,5 +63,9 @@
         <h4>Session Courses</h4>
         <br />
-        <table class="contentListing" width="100%" summary="content layout" id="folder_content">      
+      <div class="" tal:condition="not: info/normal">
+        Your faculty has not yet provided the list of courses for your certificate. Please contact your faculty!
+      </div>
+        <table class="contentListing" width="100%" id="folder_content"
+               tal:condition="info/normal">      
           <tr tal:repeat="row info/normal"
               tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
@@ -106,5 +110,6 @@
                        />
                 <br /><br />
-                <input type="submit" name="register_courses:method"
+                <input tal:condition="info/normal" 
+                       type="submit" name="register_courses:method"
                        class="context" value="Submit" />
             </td>
