Index: WAeUP_SRP/trunk/skins/waeup_student/apply_admission_manage_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/apply_admission_manage_form.pt	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/apply_admission_manage_form.pt	(revision 3709)
@@ -0,0 +1,107 @@
+<tal:block define="rendered_main options/rendered|nothing;
+           portal_status_message options/psm|nothing;
+           reg_no options/reg_no|nothing;
+           serial options/ds/serial|nothing;
+           ccode options/ds/course1|nothing;
+           ds options/ds|nothing;
+           ">	
+  <metal:block define-macro="edit_form">
+    <metal:block use-macro="here/main_template/macros/master">
+      <metal:block fill-slot="main">
+
+        <form action="" id="editForm" method="post" 
+              enctype="multipart/form-data" class="workflow"
+              tal:attributes="action string:${context/absolute_url}/apply_admission_manage"
+              >
+
+          <span tal:condition="not: rendered_main">
+            <h3>Application Process</h3>
+            <br />
+            
+            <table tal:define="info_applicants context/getApplicantsStatistics">
+            <tr> 
+              <td>PUME Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_pume" /></td>  
+            </tr>
+            <tr> 
+              <td>PUDE Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_pde" /></td>
+            </tr>
+            <tr> 
+              <td>CEST Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_cest" /></td>
+            </tr>        
+            <tr> 
+              <td>Sandwich Applicants (status submitted):</td> 
+              <td><span tal:replace="info_applicants/submitted_sandwich" /></td>
+            </tr>                   
+            <tr> 
+              <td>All Applicants (status admitted):</td> 
+              <td><span tal:replace="info_applicants/admitted" /></td>  
+            </tr>
+            <tr> 
+              <td>All Applicants (status student record created):</td> 
+              <td><span tal:replace="info_applicants/created" /></td>
+            </tr>            
+            <tr> 
+              <td>All Applicants (status not admitted):</td> 
+              <td><span tal:replace="info_applicants/not_admitted" /></td>  
+            </tr>    
+            </table>            
+            
+            <br/>
+            
+            <div class="label">Registration No:</div>
+            <input type="text" name="reg_no" size="15"
+                   />
+            <input type="submit" class="standalone" 
+                   name="search"
+                   value="Search" 
+                   />
+          </span>
+
+        <span tal:condition="rendered_main">
+          <h3>Application Record <span tal:replace="reg_no"/> 
+            <tal:block condition="python: ds['screening_type'] == 'cest' and ccode">
+                (<span tal:replace="python:'%s%s/07' % (ccode[:3],serial)" />)
+            </tal:block>
+          </h3>
+            <br />
+            <div tal:replace="structure rendered_main" />
+                        
+            <input type="hidden" name="reg_no"
+                   tal:attributes="value reg_no|nothing"
+                   />
+            <input type="submit" class="standalone" 
+                   name="reset"
+                   value="Reset" 
+                   tal:condition="python: ds['status'] and 'submitted' in ds['status']"
+                   />
+                   
+                   
+            <input type="submit" class="standalone" 
+                   name="edit"
+                   value="Save" 
+                   />                   
+                   
+            <br /><br />
+            
+
+            <div class="label">Registration No:</div>
+            <input type="text" name="new_reg_no" size="15"
+                   /> &nbsp;
+            <input type="submit" class="standalone" 
+                   name="search"
+                   value="Search next" 
+                   />
+          </span>
+        </form>
+        
+        <br/>
+        
+
+        
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: WAeUP_SRP/trunk/skins/waeup_student/getAccommodationInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/getAccommodationInfo.py	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/getAccommodationInfo.py	(revision 3709)
@@ -0,0 +1,149 @@
+## Script (Python) "getAccommodationInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student_id=None
+##title=
+##
+# $Id: getAccommodationInfo.py 1726 2007-05-02 06:21:50Z henrik $
+"""
+return Info about the current Student
+"""
+import logging
+logger = logging.getLogger('Skins.getAccommodationInfo')
+import DateTime
+
+request = context.REQUEST
+mtool = context.portal_membership
+wf = context.portal_workflow
+member = mtool.getAuthenticatedMember()
+member_id = str(member)
+path_info = request.get('PATH_INFO').split('/')
+
+if mtool.isAnonymousUser():
+    return None
+info = {}
+if student_id is None:
+    requested_id = context.getStudentId()
+    if requested_id and not context.isStaff() and member_id != requested_id:
+        logger.info('%s tried to access %s' % (member_id,requested_id))
+        return None
+    elif context.isStaff():
+        student_id = requested_id
+    else:
+        student_id = member_id
+student_record = context.students_catalog.getRecordByKey(student_id)
+if student_record is None:
+    logger.info('%s not found in students_catalog' % student_id)
+    return None
+
+info['error'] = None
+info['matric_no']=student_record.matric_no
+info['jamb_reg_no']=student_record.jamb_reg_no
+info['name']=student_record.name
+info['email']=student_record.email
+info['level']=student_record.level
+info['verdict']=getattr(student_record,'verdict','')
+review_state = info['review_state'] = student_record.review_state
+info['session'] = session = context.getSessionId()
+students_object = context.portal_url.getPortalObject().campus.students
+student = getattr(students_object, student_id)
+info['student_id'] = student_id
+info['student'] = student
+
+booking_allowed = False
+
+# customize from here
+
+ekehuan_certificates = ('BARTAPG',
+                        'BARTAPM',
+                        'BARTCER',
+                        'BARTFAA',
+                        'BARTFAP',
+                        'BARTSCP',
+                        'BARTTXT',
+                        'BARTMAS',
+                        'BARTTHR',
+                        )
+
+new_states = ('cleared_and_validated',
+              'school_fee_paid',
+              'courses_registered',
+              'courses_validated',
+              )
+
+new = student_record.entry_session == session[0]
+arrived = student_record.session == session[0]
+
+level = None
+end_level = None
+previous = None
+
+try:
+    level = int(student_record.level)
+except:
+    logger.info('%s has invalid level %s' % (student_id,student_record.level))
+try:
+    end_level = int(student_record.end_level)
+except:
+    logger.info('%s has invalid end_level %s' % (student_id,student_record.end_level))
+try:
+    previous = int(student_record.session) == int(session[0]) - 1
+except:
+    logger.info('%s has invalid session %s' % (student_id,student_record.session))
+
+if level is None or end_level is None or student_record.review_state == 'deactivated':
+    pass
+elif arrived:
+    if new:
+        booking_allowed = student_record.review_state in new_states
+    else:
+        booking_allowed = not (level % 100)
+elif previous:
+    booking_allowed = student_record.verdict in ('A','B',)
+
+info['booking_allowed'] = booking_allowed
+if not booking_allowed:
+    info['acco'] = None
+    info['student_status'] = ''
+    return info
+
+acco_id = 'accommodation_' + session[0]
+acco = getattr(student,acco_id,None)
+info['acco'] = acco
+info['acco_id'] = acco_id
+bt = 're'
+info['maintenance_paid'] = False
+if acco is not None:
+    info['acco_doc'] = acco.getContent()
+    info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None)
+    info['maintenance_paid'] = info['acco_review_state'] == "maintenance_fee_paid"
+
+d = {}
+delta = 0
+if previous:
+    delta = 100
+if new:
+    bt = 'fr'
+elif level + delta < end_level:
+    bt = 're'
+else:
+    bt = 'fi'
+
+d['sex'] = 'male'
+if student_record.sex:
+    d['sex'] = 'female'
+if student_record.faculty in ('MED','DEN') and level > 400:
+    bt += "_med"
+elif student_record.course in ekehuan_certificates:
+    bt += "_ekenhuan"
+#elif student_record.course in pti_certificates:
+#    bt += "_pti"
+info['sex']=d['sex']
+d['bt'] = bt
+student_status = "%(sex)s_%(bt)s" % d
+info['student_status'] = student_status
+return info
+
Index: WAeUP_SRP/trunk/skins/waeup_student/getNextInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/getNextInfo.py	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/getNextInfo.py	(revision 3709)
@@ -0,0 +1,62 @@
+## Script (Python) "getNextInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student_brain
+##title=
+##
+# $Id: getNextInfo.py 2678 2007-11-16 13:41:44Z henrik $
+"""
+return the students next info
+"""
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+
+info = {}
+
+reasons = ''
+
+session_id = student_brain.session
+level_id = student_brain.level
+review_state = student_brain.review_state
+verdict = student_brain.verdict
+
+has_verdict = verdict and verdict != 'N/A'
+has_session = session_id and session_id != 'N/A'
+has_level = level_id and level_id != 'N/A'
+
+info['next_transition'] = None
+info['next_session_id'] = next_session_id = session_id
+info['next_level_id'] = next_level_id = level_id
+info['next_verdict'] = verdict
+info['next_previous_verdict'] = ''
+verdicts_voc = context.portal_vocabularies.verdicts
+if review_state == 'cleared_and_validated':
+    info['next_transition'] = "pay_school_fee"
+    info['next_verdict'] = ''
+elif review_state == 'returning' and has_verdict and has_level and has_session:
+    info['next_session_id'] = next_session_id = "%02d" % (int(session_id)+1)
+    if int(session_id) > 4:
+        info['next_transition'] = "pay_school_fee"
+        info['next_verdict'] = ''
+        info['next_previous_verdict'] = verdict
+        if verdict in ('A','B','M',):
+            info['next_level_id'] = "%s" % (divmod(int(level_id),100)[0]*100 + 100)
+        elif verdict == 'C':
+            info['next_level_id'] = "%s" % (int(level_id) + 10)
+        else:
+            info['next_level_id'] = level_id
+    else:
+        info['next_level_id'] = "%s" % (int(level_id) + 100)
+elif review_state == 'returning' and not (has_session and has_level and has_verdict):
+    reasons = "Your data record is incomplete. School fee payment has been disabled, please contact your faculty!"
+
+info['reasons'] = reasons
+info['next_session_str'] = context.getSessionsVoc(next_session_id)
+
+return info
Index: WAeUP_SRP/trunk/skins/waeup_student/getStudyLevelInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/getStudyLevelInfo.py	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/getStudyLevelInfo.py	(revision 3709)
@@ -0,0 +1,124 @@
+## Script (Python) "getStudyLevelInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id: getStudyLevelInfo.py 2760 2007-11-26 07:39:15Z henrik $
+"""
+return Info about the Studylevel
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+"""
+
+info = context.waeup_tool.getAccessInfo(context)
+student_id = info['student_id']
+if student_id is None:
+    return None
+
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+member_id = str(member)
+
+course_results = context.course_results
+request = context.REQUEST
+response = request.RESPONSE
+import logging
+logger = logging.getLogger('Skins.getStudyLevelInfo')
+
+level_id  =  context.getId()
+level_doc = info['doc'] = context.getContent()
+
+info['is_so'] = is_so = info['is_sectionofficer']
+#info['is_student'] = is_student = context.isStudent()
+info['is_ca'] = is_ca = context.isCourseAdviser()
+#info['student'] = student = context.students_catalog(id=student_id)[0]
+info['student'] = student = context.students_catalog.getRecordByKey(student_id)
+info['review_state'] = review_state = student.review_state
+is_current_level = level_id == student.level
+school_fee_paid =  review_state == 'school_fee_paid'
+info['is_current_level'] = is_current_level
+info['has_verdict'] = has_verdict = level_doc.verdict
+
+info['submission_allowed']= school_fee_paid and is_current_level and not has_verdict
+info['validation_allowed']= review_state == 'courses_registered' and is_current_level
+info['rejection_allowed']= review_state in ('courses_registered', 'courses_validated',) and is_current_level
+info['validated'] = review_state in ('courses_validated','returning') and is_current_level
+
+info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level and not has_verdict) or\
+                            (info['is_student'] and school_fee_paid and is_current_level and not has_verdict) or\
+                            (is_so) # and is_current_level and not has_verdict)
+
+info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict).upper()
+info['session'] = context.portal_vocabularies.sessions.get(level_doc.session)
+info['level_str'] = context.portal_vocabularies.student_levels.get(level_id)
+
+info['choosen_ids'] = request.get('ids',[])
+
+#info['status_info'] = ""
+#if is_student:
+#    if review_state == 'courses_registered':
+#        info['status_info'] = "Request for course validation pending"
+#    elif review_state == 'courses_validated':
+#        info['status_info'] = "Courses validated"
+#elif is_ca:
+#    if review_state == 'courses_registered':
+#        info['status_info'] = "Please validate these courses"
+#    elif review_state == 'courses_validated':
+#        info['status_info'] = "Courses validated"
+
+cert_id = student.course
+info['cert_id'] = cert_id
+total_credits,gpa,carry_overs,normal1,normal2,normal3 = course_results.getCourses(student_id,level_id)
+info['total_credits'] = total_credits
+
+#start customization
+
+if context.objectIds():
+    course_results.moveResultsHere(context,student_id)
+    logger.info("%s initiated moveResultsHere for %s in level %s" % (member_id,student_id,level_id))
+
+max_credits = 50
+try:
+    if int(context.getId()) >=  int(student.end_level):
+        max_credits = 51
+except:
+    logger.info("%s has strange level id %s" % (student_id,level_id))
+info['without_score'] = without_score = True
+if without_score:
+    for rows in (normal1,normal2,normal3):
+        for row in rows:
+            row['score'] = 0
+info['without_cascore'] = True
+#end customization
+
+info['max_credits'] = max_credits
+info['credits_exceeded'] = total_credits > max_credits
+current_session = student.session
+
+info['gpa'] = gpa
+if gpa and total_credits:
+    info['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
+
+# carry_overs.sort(cmp_semester_id)
+info['carry_overs'] = carry_overs
+# normal.sort(cmp_semester_id)
+
+info['normal1'] = normal1
+info['normal2'] = normal2
+info['normal3'] = normal3
+
+info['data_missing'] = not info['normal1'] and not info['normal2'] and not info['normal3']
+info['spillover'] = student.level > student.end_level
+
+students_object = context.portal_url.getPortalObject().campus.students
+student = getattr(students_object, student_id)
+info['app'] = student.application
+info['app_doc'] = student.application.getContent()
+return info
Index: WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/search_students_form.pt	(revision 3709)
@@ -0,0 +1,132 @@
+<metal:body use-macro="here/main_template/macros/master">
+  <metal:main fill-slot="main"
+              tal:define="rendered options/rendered;
+              portal_status_message options/psm;
+              students options/students;
+              info options/info|nothing;
+              is_so context/isSectionOfficer;
+              allowed options/allowed|nothing;"
+              >
+    <span tal:condition="not: allowed">
+      <span tal:content="here/illegal_view" />
+    </span>
+    <span tal:condition="allowed" tal:omit-tag="">
+      <strong>
+        <nobr><a href="statistics_new_view">New Student Statistics</a>
+        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+        <nobr><a href="statistics_ret_view">Returning Student Statistics</a>
+        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+        <nobr><a href="statistics_simple_view">Basic Student Statistics</a>
+        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
+        <span tal:condition="is_so">
+          <nobr><a href="apply_admission_manage">Application Process</a>
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>      
+          <nobr><a href="view_logs">View Log Files</a>
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+          <nobr><a href="add_student">Add Student Record</a>        
+          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
+          <nobr><a href="deactivate_students">Deactivate Student Record(s)</a></nobr>
+        </span>
+      </strong>
+      <h3> Search Student Section</h3><br />
+      You are logged in as member <span tal:replace="info/member|nothing" /> 
+      <span tal:condition="info/faculties|nothing" tal:omit-tag="">
+        who is ClearanceOfficer for Faculty 
+        <span tal:repeat="faculty info/faculties" tal:content="faculty" />
+      </span>
+      <span tal:condition="info/departments|nothing" tal:omit-tag="">
+        and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
+      <br /><br />
+      <span tal:replace="structure rendered" />
+      <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
+      <span tal:condition="students">
+        <span 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=5000);
+        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="">
+          <tal:block tal:condition="python: items and batch_info and batch_info['nb_pages'] > 1">
+            <div class="batchLayout" 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" />
+            </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:${context/portal_url}/campus/students/${student/id}"
+                         tal:content="student/id"></a></td>    
+                  <td>
+                    <span tal:replace="student/name" />
+                  </td>    
+                  <td><span tal:replace="student/matric_no" /></td>   
+                  <td><span tal:replace="student/jamb_reg_no" /></td>
+                  <td tal:condition="options/co_view|nothing">
+                    <a href="id" 
+                       tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/clearance/external_clearance_edit_form"
+                       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 change state]</a></td>
+                  <td tal:condition="options/ca_view|nothing">
+                    <a href="id" 
+                       tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/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>
+            </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>
+      </span>
+    </span>
+  </metal:main>
+</metal:body>
Index: WAeUP_SRP/trunk/skins/waeup_student/student_index.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/student_index.py	(revision 3709)
+++ WAeUP_SRP/trunk/skins/waeup_student/student_index.py	(revision 3709)
@@ -0,0 +1,54 @@
+## Script (Python) "student_index"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=batch=None,portal_status_message=None
+##title=
+##
+# $Id: student_index.py 2297 2007-10-01 07:26:30Z henrik $
+"""
+return the current student_index
+"""
+
+request = context.REQUEST
+#session = request.SESSION
+response = request.RESPONSE
+redirect = response.redirect
+pm = context.portal_membership
+member = pm.getAuthenticatedMember()
+
+#from Products.zdb import set_trace;set_trace()
+if context.isStaff():
+    if context.portal_type == 'StudentStudyCourse':
+        return context.study_course_view()
+    elif context.portal_type == 'StudentStudyLevel':
+        return context.study_level_view()
+    elif context.portal_type == 'StudentClearance':
+        return context.clearance_view()
+    elif context.portal_type == 'PaymentsFolder':
+        return context.payments_view()
+    elif context.portal_type == 'Student':
+        if portal_status_message:
+            return redirect("%s/student_view?portal_status_message=%s" % (context.absolute_url(),portal_status_message))
+        else:
+            return redirect("%s/student_view" % context.absolute_url())
+    elif context.portal_type == 'Payment':
+        return context.payment_receipt()
+    return redirect("%s/waeup_document_view" % context.absolute_url())
+if context.isStudent():
+    if context.portal_type == 'PaymentsFolder':
+        return context.payments_view()
+    elif context.portal_type == 'Payment':
+        return context.payment_receipt()
+    elif context.portal_type == 'StudentStudyLevel':
+        return context.study_level_view()
+    elif context.portal_type == 'StudentStudyCourse':
+        return context.study_course_view()
+    students_url = "%s/campus/students" % (context.portal_url())
+    id = str(member)
+    return redirect("%s/%s/student_view" % (students_url, id))
+
+return redirect("%s/srp_anonymous_view" % context.portal_url())
+
