Index: /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolder.py
===================================================================
--- /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolder.py	(revision 882)
+++ /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolder.py	(revision 883)
@@ -73,5 +73,5 @@
         if not hasattr(real_object,'portal_type'):
             break
-        if real_object.portal_type != "Student":
+        if real_object.portal_type not in ("Student","StudentClearance"):
             break
         #import pdb;pdb.set_trace()
Index: /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolderWithGroups.py
===================================================================
--- /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolderWithGroups.py	(revision 882)
+++ /WAeUP_SRP/trunk/PatchCPSUserFolderUserFolderWithGroups.py	(revision 883)
@@ -123,5 +123,5 @@
     return None
 
-from Products.CPSUserFolder import UserFolderWithGroups  
-UserFolderWithGroups.getRolesInContext = getRolesInContext
-UserFolderWithGroups.allowed = allowed
+from Products.CPSUserFolder.UserFolderWithGroups import PatchBasicUser  
+PatchBasicUser.getRolesInContext = getRolesInContext
+PatchBasicUser.allowed = allowed
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_subobject_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_subobject_wf/definition.xml	(revision 882)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_subobject_wf/definition.xml	(revision 883)
@@ -94,4 +94,5 @@
 
   <guard>
+   <guard-role>ClearanceOfficer</guard-role>
    <guard-role>Manager</guard-role>
    <guard-role>SectionManager</guard-role>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml	(revision 882)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml	(revision 883)
@@ -49,4 +49,5 @@
   <permission-map name="Modify portal content"
                   acquired="True">
+    <permission-role>ClearanceOfficer</permission-role>
   </permission-map>
   <permission-map name="View" acquired="True">
@@ -57,4 +58,8 @@
   <exit-transition transition_id="create_content"/>
   <exit-transition transition_id="reject_clearance"/>
+  <permission-map name="Modify portal content"
+                  acquired="True">
+    <permission-role>ClearanceOfficer</permission-role>
+  </permission-map>
   <permission-map name="View" acquired="True">
    <permission-role>Owner</permission-role>
@@ -65,4 +70,8 @@
  </state>
  <state state_id="finally_rejected" title="">
+  <permission-map name="Modify portal content"
+                  acquired="True">
+    <permission-role>ClearanceOfficer</permission-role>
+  </permission-map>
   <permission-map name="View" acquired="True">
    <permission-role>Owner</permission-role>
Index: /WAeUP_SRP/trunk/skins/waeup_student/co_searchStudents.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/co_searchStudents.py	(revision 882)
+++ /WAeUP_SRP/trunk/skins/waeup_student/co_searchStudents.py	(revision 883)
@@ -165,12 +165,13 @@
             info = context.getStudentInfo(item)
             students.append(info)
-    return context.co_search_view(rendered = rend,
-                             psm = "%d,%d matching Students found QS = %s" %\
-                                    (len(review_set),len(search_set),query_step),
+    return context.students_co_view(rendered = rend,
+                             psm = "",
+                             #psm = "%d,%d matching Students found QS = %s" %\
+                             #       (len(review_set),len(search_set),query_step),
                              #psm = "%d found QS = %s items: %s" % (len(items),query_step,items),
                              students = students,
                              is_manager = is_manager,
                              )
-return context.co_search_view(rendered = rend,
+return context.students_co_view(rendered = rend,
                              psm = """Step: %s found: %s Your search for "%s" in %s with state %s failed.<br\>%s""" % (query_step,len(items),st,what,state,bools),
                              students = students,
Index: eUP_SRP/trunk/skins/waeup_student/co_search_view.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/co_search_view.pt	(revision 882)
+++ 	(revision )
@@ -1,113 +1,0 @@
-<metal:html tal:define="rendered options/rendered;
-            portal_status_message options/psm;
-            students options/students;
-            is_manager options/is_manager;"
-            >
-  <metal:body use-macro="here/main_template/macros/master">
-    <metal:block fill-slot="header"
-                 tal:define="creation creation|nothing;
-                 edition edition|nothing;
-                 metadata metadata|nothing"
-                 >
-    </metal:block>
-    
-    <metal:main fill-slot="main">
-      <span tal:condition="not: is_manager">
-        <metal:block use-macro="here/error_not_found/macros/not_found" />
-      </span>
-      <span tal:condition="is_manager"
-        tal:define="items students;
-        columns python:3;
-        items_per_page python:40;
-        max_items python:300;
-        zoom python:0;
-        batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
-        batches python:batches_all[0];
-        batch_info python:batches_all[1];
-        zoomed python:batches_all[2];
-        mq nocall:modules/ZTUtils/make_query;"
-        tal:omit-tag=""
-        >
-      
-        <h3> Clearance Officer Search</h3>
-        
-        <br />
-      
-        <span tal:replace="structure rendered" />
-        <tal:block tal:condition="python: batch_info and batch_info['nb_pages'] > 1">
-          <div class="batchLayout">
-            <span i18n:translate="">
-              Objects: 
-              <strong>
-                <tal:block replace="batch_info/start"
-                           i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
-                                                                   i18n:name="batch_limit" />
-              </strong>
-              of <tal:block replace="batch_info/length"
-                            i18n:name="batch_length" />
-            </span>
-          </div>
-          <br />
-        </tal:block>
-        <table class="contentListing" width="100%">
-          <span tal:repeat="rows batches" tal:omit-tag="">
-            <span tal:repeat="student rows">
-              <tr tal:condition="student" 
-                  tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
-                <td><a href="id" tal:attributes="href string:${student/student/absolute_url}"
-                       tal:content="student/id"></a></td>    
-                <td>
-                  <span tal:replace="python: student['per_doc'].firstname" />
-                  <span tal:replace="python: student['per_doc'].middlename" />
-                  <span tal:replace="python: student['per_doc'].lastname" />
-                </td>    
-                <td><span tal:replace="python: student['app_doc'].jamb_reg_no" /></td>    
-                <td><a href="id" 
-                       tal:attributes="href string:${student/student/clearance/absolute_url}"
-                       tal:content="student/review_state"></a></td>    
-                <td>
-              </tr>
-            </span>
-          </span>
-        </table>
-        <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
-          <div class="pageNavigationLayout">
-            <a tal:define="previous batch_info/previous"
-               tal:condition="python:previous is not None"
-               tal:attributes="href python:'%s?%s'%(request['URL'],
-               mq(request.form, b_start=0))"
-               >
-            (&lt;&lt;)</a>
-            <a tal:define="previous batch_info/previous"
-               tal:condition="python:previous is not None"
-               tal:attributes="href python:'%s?%s'%(request['URL'],
-               mq(request.form, b_start=previous))"
-               i18n:translate="batch_previous">Previous</a>
-            <tal:block repeat="page batch_info/pages">
-              <tal:block condition="python:page != batch_info['start'] - 1">
-                <a tal:attributes="href python:'%s?%s'%(request['URL'],
-                mq(request.form, b_start=page))"
-                tal:content="repeat/page/number">1</a>&nbsp;
-              </tal:block>
-              <tal:block condition="python:page == batch_info['start'] - 1">
-                <span tal:content="string:${repeat/page/number}" />&nbsp;
-              </tal:block>
-            </tal:block>
-            <a tal:define="next batch_info/next"
-               tal:condition="python:next is not None"
-               tal:attributes="href python:'%s?%s'%(request['URL'],
-               mq(request.form, b_start=next))"
-               i18n:translate="batch_next">Next</a>
-            <a tal:define="next batch_info/next;
-            last_page python:batch_info['pages'][-1]"
-            tal:condition="python:next is not None"
-            tal:attributes="href python:'%s?%s'%(request['URL'],
-            mq(request.form, b_start=last_page))"
-            >
-            (&gt;&gt;)</a>
-          </div>
-        </tal:block>
-      </span>
-    </metal:main>
-  </metal:body>
-</metal:html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/getStudentInfo.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/getStudentInfo.py	(revision 882)
+++ /WAeUP_SRP/trunk/skins/waeup_student/getStudentInfo.py	(revision 883)
@@ -19,5 +19,4 @@
 member = mtool.getAuthenticatedMember()
 path_info = request.get('PATH_INFO').split('/')
-roles = member.getRoles()
 
 info = {}
@@ -34,4 +33,5 @@
 else:
     student_id = student.getId()
+roles = member.getRoles()
 student_path = "%s/campus/students/%s" % (context.portal_url.getPortalPath(),student_id)
 student = context.restrictedTraverse(student_path,default=None)
Index: /WAeUP_SRP/trunk/skins/waeup_student/students_co_view.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/students_co_view.pt	(revision 883)
+++ /WAeUP_SRP/trunk/skins/waeup_student/students_co_view.pt	(revision 883)
@@ -0,0 +1,113 @@
+<metal:html tal:define="rendered options/rendered;
+            portal_status_message options/psm;
+            students options/students;
+            is_manager options/is_manager;"
+            >
+  <metal:body use-macro="here/main_template/macros/master">
+    <metal:block fill-slot="header"
+                 tal:define="creation creation|nothing;
+                 edition edition|nothing;
+                 metadata metadata|nothing"
+                 >
+    </metal:block>
+    
+    <metal:main fill-slot="main">
+      <span tal:condition="not: is_manager">
+        <metal:block use-macro="here/error_not_found/macros/not_found" />
+      </span>
+      <span tal:condition="is_manager"
+        tal:define="items students;
+        columns python:3;
+        items_per_page python:40;
+        max_items python:300;
+        zoom python:0;
+        batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
+        batches python:batches_all[0];
+        batch_info python:batches_all[1];
+        zoomed python:batches_all[2];
+        mq nocall:modules/ZTUtils/make_query;"
+        tal:omit-tag=""
+        >
+      
+        <h3> Clearance Officer Search</h3>
+        
+        <br />
+      
+        <span tal:replace="structure rendered" />
+        <tal:block tal:condition="python: batch_info and batch_info['nb_pages'] > 1">
+          <div class="batchLayout">
+            <span i18n:translate="">
+              Objects: 
+              <strong>
+                <tal:block replace="batch_info/start"
+                           i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
+                                                                   i18n:name="batch_limit" />
+              </strong>
+              of <tal:block replace="batch_info/length"
+                            i18n:name="batch_length" />
+            </span>
+          </div>
+          <br />
+        </tal:block>
+        <table class="contentListing" width="100%">
+          <span tal:repeat="rows batches" tal:omit-tag="">
+            <span tal:repeat="student rows">
+              <tr tal:condition="student" 
+                  tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
+                <td><a href="id" tal:attributes="href string:${student/student/absolute_url}"
+                       tal:content="student/id"></a></td>    
+                <td>
+                  <span tal:replace="python: student['per_doc'].firstname" />
+                  <span tal:replace="python: student['per_doc'].middlename" />
+                  <span tal:replace="python: student['per_doc'].lastname" />
+                </td>    
+                <td><span tal:replace="python: student['app_doc'].jamb_reg_no" /></td>    
+                <td><a href="id" 
+                       tal:attributes="href string:${student/student/clearance/absolute_url}/clearance_edit_form_manager"
+                       tal:content="student/review_state"></a></td>    
+                <td>
+              </tr>
+            </span>
+          </span>
+        </table>
+        <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
+          <div class="pageNavigationLayout">
+            <a tal:define="previous batch_info/previous"
+               tal:condition="python:previous is not None"
+               tal:attributes="href python:'%s?%s'%(request['URL'],
+               mq(request.form, b_start=0))"
+               >
+            (&lt;&lt;)</a>
+            <a tal:define="previous batch_info/previous"
+               tal:condition="python:previous is not None"
+               tal:attributes="href python:'%s?%s'%(request['URL'],
+               mq(request.form, b_start=previous))"
+               i18n:translate="batch_previous">Previous</a>
+            <tal:block repeat="page batch_info/pages">
+              <tal:block condition="python:page != batch_info['start'] - 1">
+                <a tal:attributes="href python:'%s?%s'%(request['URL'],
+                mq(request.form, b_start=page))"
+                tal:content="repeat/page/number">1</a>&nbsp;
+              </tal:block>
+              <tal:block condition="python:page == batch_info['start'] - 1">
+                <span tal:content="string:${repeat/page/number}" />&nbsp;
+              </tal:block>
+            </tal:block>
+            <a tal:define="next batch_info/next"
+               tal:condition="python:next is not None"
+               tal:attributes="href python:'%s?%s'%(request['URL'],
+               mq(request.form, b_start=next))"
+               i18n:translate="batch_next">Next</a>
+            <a tal:define="next batch_info/next;
+            last_page python:batch_info['pages'][-1]"
+            tal:condition="python:next is not None"
+            tal:attributes="href python:'%s?%s'%(request['URL'],
+            mq(request.form, b_start=last_page))"
+            >
+            (&gt;&gt;)</a>
+          </div>
+        </tal:block>
+      </span>
+    </metal:main>
+  </metal:body>
+</metal:html>
