Index: /WAeUP_SRP/trunk/profiles/default/themes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes.xml	(revision 1581)
+++ /WAeUP_SRP/trunk/profiles/default/themes.xml	(revision 1582)
@@ -25,4 +25,5 @@
   <element key="payment_receipt" value="WAeUP_Student+Slippage"/>
   <element key="course_registration_slip" value="WAeUP_Student+Slippage"/>
+  <element key="external_study_level_view" value="WAeUP_Student+Slippage"/>
  </property>
  <object name="default" meta_type="Portal Theme"/>
Index: /WAeUP_SRP/trunk/skins/waeup_pins/enable_pins.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_pins/enable_pins.py	(revision 1581)
+++ /WAeUP_SRP/trunk/skins/waeup_pins/enable_pins.py	(revision 1582)
@@ -42,4 +42,4 @@
             }
     pincat.modifyRecord(**dict)
-    logger.info('%s enabled pin %s' % (member,pid))
+    logger.info('%s enabled pin %s' % (member,uid))
 return request.RESPONSE.redirect("%s/campus/pins/search_pins" % context.portal_url())
Index: /WAeUP_SRP/trunk/skins/waeup_student/external_study_level_view.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/external_study_level_view.pt	(revision 1582)
+++ /WAeUP_SRP/trunk/skins/waeup_student/external_study_level_view.pt	(revision 1582)
@@ -0,0 +1,193 @@
+<metal:html>
+  <metal:body use-macro="here/waeup_content_master/macros/master">
+    <metal:block fill-slot="header" 
+                 tal:define="global info context/getStudyLevelInfo;
+                 global is_so context/isSectionOfficer;
+                 global is_ca info/is_ca;
+                 global show_check_boxes info/show_check_boxes;
+		             global is_student info/is_student;
+		             global status_info info/status_info;
+		             global review_state info/review_state;
+		             global view_only info/view_only">
+              <div style="text-align: right"
+             tal:condition="python:review_state == 'courses_validated'">
+        <a href="" target="slip" tal:attributes="href string:course_registration_slip"
+            onclick="javascript:window.open('','slip','width=600, height=700, directories=no, toolbar=no, location=no, menubar=yes, scrollbars=yes, status=no, resizable=no, dependent=no')">
+            <img tal:attributes="src string:${here/portal_url}/actionicon_print.png" />
+            Course Registration Slip
+        </a>
+        
+        </div>
+
+      <h3> 
+        <span tal:condition="python: is_so or is_ca">
+          <span tal:content="info/student/name" />:
+        </span>
+        Course Registration Form for <span tal:content="here/title_or_id" />
+      </h3>
+
+    </metal:block>
+    <metal:main fill-slot="main" tal:condition="python:1">
+      <form action="." method="post" class="group">
+        <span tal:condition="info/carry_overs" tal:omit-tag="">
+        <h4>Carryover Courses</h4>
+        <br />
+        <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">
+          <tr tal:repeat="row info/carry_overs"
+              tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+            <td align="left" valign="middle" style="width: 5px;"
+                tal:condition="show_check_boxes">
+              <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                     tal:define="id row/id"
+                     tal:attributes="value id;
+                     id python:'cb_' + id;
+                     checked python:id in info['choosen_ids'];" 
+                     />
+            </td>
+            <td width="78%" tal:content="row/title"></td>
+            <td align="center" width="10%" tal:content="row/code"></td>
+            <td align="center" width="2%">S<span tal:content="row/semester" /></td>
+            <td align="center" width="2%" tal:content="row/credits"></td>
+            <td align="center" width="8%" tal:content="row/grade|string:"></td>
+          </tr>
+        </table>
+        </span> 
+        <br />
+        <h4>Session Courses</h4>
+        <br />
+      <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')">
+            <td align="left" valign="middle" style="width: 5px;"
+	              tal:condition="show_check_boxes">
+              <input type="checkbox" name="ids:list" value="" id="" class="noborder"
+                     tal:define="id row/id"
+                     tal:attributes="value id;
+                     id python:'cb_' + id;
+                     checked python:id in info['choosen_ids'];" 
+                     />
+            </td>
+            <td width="78%" tal:content="row/title"></td>
+            <td align="center" width="10%" tal:content="row/code"></td>
+            <td align="center" width="2%">S<span tal:content="row/semester" /></td>
+            <td align="center" width="2%" tal:content="row/credits"></td>
+            <td align="center" width="8%" tal:content="row/coe|nothing"></td>
+          </tr>
+          <tr>
+            <td tal:condition="show_check_boxes" colspan="1"></td>
+            <td colspan="1"></td>
+            <th colspan="2">Total Credits:</th>
+            <td align="center" width="2%" tal:content="info/credits_total"></td>
+          </tr>
+        </table>
+
+        
+      
+        
+        <table tal:condition="python: is_student and review_state == 'school_fee_paid'" width="100%" cellspacing="0" cellpadding="2"
+               class="folderButtons">
+          <tr>
+            <td align="left" valign="top" rowspan="3"></td>
+            <td align="left" valign="top">
+                <input type="submit" name="delete_course_result:method" value="Delete selected"
+                       class="destructive" i18n:attributes="value"
+                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                       ('Do you really want to delete selected courses?', )" 
+                       />
+                <input type="submit" name="refresh_level:method"
+                       class="context" value="Update" 
+                       />
+                <br /><br />
+                <input tal:condition="info/normal" 
+                       type="submit" name="register_courses:method"
+                       class="context" value="Submit" />
+            </td>
+          </tr>
+        </table>
+        <table tal:condition="python:is_so" width="100%" cellspacing="0" cellpadding="2"
+               class="folderButtons">
+          <tr>
+            <td align="left" valign="top" rowspan="3"></td>
+            <td align="left" valign="top">
+                <input type="button" value="Select all" class="context"
+                       onclick="someJavaScriptFunctionThatWillBeReplaced"
+                       i18n:attributes="value"
+                       tal:attributes="onclick python:'toggleSelect(this, \'%s\', \'%s\')'
+                       % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
+                       />
+                <input type="submit" name="delete_course_result:method" value="Delete selected"
+                       class="destructive" i18n:attributes="value"
+                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                       ('Do you really want to delete the courses selected?', )" 
+                       />
+                <input 
+                       type="submit" name="refresh_level:method"
+                       class="context" value="Update" 
+                       />
+                <input tal:condition="python: review_state == 'school_fee_paid'" type="submit" name="register_courses:method"
+                       class="context" value="Submit" />  
+                <input tal:condition="python: review_state == 'courses_registered'" type="submit" name="validate_courses:method"
+                       class="context" value="Validate" />
+                <input tal:condition="python: review_state in ('courses_registered', 'courses_validated',)" type="submit" name="reject_courses:method"
+                       class="context" value="Reject" />
+
+            </td>
+          </tr>
+        </table>
+        <table tal:condition="python:is_ca" width="100%" cellspacing="0" cellpadding="2"
+               class="folderButtons">
+          <tr>
+            <td align="left" valign="top" rowspan="3"></td>
+            <td align="left" valign="top">
+                <input tal:condition="python: review_state == 'school_fee_paid'"
+                       type="button" value="Select all" class="context"
+                       onclick="someJavaScriptFunctionThatWillBeReplaced"
+                       i18n:attributes="value"
+                       tal:attributes="onclick python:'toggleSelect(this, \'%s\', \'%s\')'
+                       % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
+                       />
+                <input tal:condition="python: review_state == 'school_fee_paid'"
+                       type="submit" name="delete_course_result:method" value="Delete selected"
+                       class="destructive" i18n:attributes="value"
+                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
+                       ('Do you really want to delete the courses selected?', )" 
+                       />
+                <input tal:condition="python: review_state == 'school_fee_paid'"
+                       type="submit" name="refresh_level:method"
+                       class="context" value="Update" 
+                       />
+                <input tal:condition="python: review_state == 'school_fee_paid'" type="submit" name="register_courses:method"
+                       class="context" value="Submit" />  
+                <input tal:condition="python: review_state == 'courses_registered'" type="submit" name="validate_courses:method"
+                       class="context" value="Validate" />
+                <input tal:condition="python: review_state in ('courses_registered', 'courses_validated',)" type="submit" name="reject_courses:method"
+                       class="context" value="Reject" />
+
+            </td>
+          </tr>
+        </table>
+
+      </form>
+      <br />
+        <form action="add_course_result" method="post" class="group"
+            tal:condition="show_check_boxes">
+        <table>
+          <tr>
+            <th>Course Id</th>
+            <td><input type="text" name="course_id" 
+                       tal:attributes="value request/course_id|nothing"/></td>
+            <td colspan="2">
+              <input type="submit" name="add"
+                     class="context" value="Add Course" 
+                     />
+            </td>                
+        </table>
+        </form>         
+    </metal:main>
+  </metal:body>
+</metal:html>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/search_students.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/search_students.py	(revision 1581)
+++ /WAeUP_SRP/trunk/skins/waeup_student/search_students.py	(revision 1582)
@@ -208,7 +208,7 @@
     query = Eq('review_state',state)
     review_res = evalAdvancedQuery(query)
-    
+
     logger.info('%s searches for students in review_state %s' % (member,state))
-    
+
     if with_timer:
         end = DateTime().timeTime()
@@ -298,4 +298,5 @@
                              allowed = allowed,
                              co_view = co_view,
+                             ca_view = ca_view
                              )
 return context.search_students_form(rendered = rend,
Index: /WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt	(revision 1581)
+++ /WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt	(revision 1582)
@@ -1,10 +1,3 @@
 <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"
             tal:define="rendered options/rendered;
@@ -12,5 +5,5 @@
             students options/students;
             info options/info|nothing;
-            is_so context/isSectionOfficer;            
+            is_so context/isSectionOfficer;
             allowed options/allowed|nothing"
             >
@@ -96,5 +89,10 @@
                          onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
                          >[view and change state]</a></td>
-                    <td tal:condition="options/co_view|nothing"><span tal:replace="student/review_state|nothing" /></td>   
+                    <td tal:condition="options/ca_view|nothing">
+                      <a href="id" 
+                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
+                         target="edit"
+                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
+                         >[view and validate course list]</a></td>
                   </tr>
                 </span>
Index: /WAeUP_SRP/trunk/skins/waeup_student/set_access_data.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/set_access_data.py	(revision 1581)
+++ /WAeUP_SRP/trunk/skins/waeup_student/set_access_data.py	(revision 1582)
@@ -12,5 +12,5 @@
 
 if matric_no is None:
-    logger.info('"No matric_no in request"')
+    logger.info('No matric_no in request')
     return REQUEST.RESPONSE.redirect("%s" % context.portal_url())
 lt = context.portal_layouts
