Index: WAeUP_SRP/trunk/skins/waeup_futminna/getTranscriptInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_futminna/getTranscriptInfo.py	(revision 5458)
+++ WAeUP_SRP/trunk/skins/waeup_futminna/getTranscriptInfo.py	(revision 5458)
@@ -0,0 +1,93 @@
+## Script (Python) "getTranscriptInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student=None
+##title=
+##
+# $Id$
+"""
+return Info about the Studylevel
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+"""
+
+request = context.REQUEST
+response = request.RESPONSE
+import logging
+logger = logging.getLogger('Skins.getTranscriptInfo')
+info = context.waeup_tool.getAccessInfo(context)
+student_id = info['student_id']
+if student_id is None:
+    return None
+
+mtool = context.portal_membership
+if mtool.isAnonymousUser(): # or not context.isSectionOfficer():
+    return None
+
+mtool = context.portal_membership
+member = mtool.getAuthenticatedMember()
+member_id = str(member)
+
+course_results = context.course_results
+
+student_record = context.students_catalog.getRecordByKey(student_id)
+info['student_record'] = context.getFormattedStudentEntry(student_record)
+students_object = context.portal_url.getPortalObject().campus.students
+student = getattr(students_object, student_id)
+info['app'] = student.application
+try:
+    info['app_doc'] = student.application.getContent()
+except:
+    return
+
+year_courses = [[],[],[],[],[],[],[],[],[]]
+year_details = [{'year':0},{'year':1},{'year':2},{'year':3},{'year':4},{'year':5},{'year':6},{'year':7},{'year':8}]
+
+courses = course_results.getAllCourses(student_id)
+
+for course in courses:
+    year = divmod(int(course['level_id']),100)[0]
+    year_courses[year].append(course)
+    if not getattr(year_details[year],'session',None):
+        year_details[year]['session'] = context.portal_vocabularies.sessions.get(course['session_id'])
+
+year_counter = 0
+cgpa = 0
+c_total_credits = 0
+for year in year_courses:
+    gpa = 0
+    total_credits = 0
+    for course in year:
+        if course['weight'] and course['credits']:
+            gpa += int(course['weight']) * int(course['credits'])
+            total_credits += int(course['credits'])
+    cgpa += gpa
+    c_total_credits += total_credits
+    if gpa and total_credits:
+        year_details[year_counter]['total_credits'] = total_credits
+        year_details[year_counter]['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
+    else:
+        year_details[year_counter]['total_credits'] = 0
+        year_details[year_counter]['gpa'] = 0
+
+    if cgpa and c_total_credits:
+        year_details[year_counter]['c_total_credits'] = c_total_credits
+        year_details[year_counter]['cgpa'] = "%4.2f" % (float(cgpa)/int(c_total_credits))
+    else:
+        year_details[year_counter]['c_total_credits'] = 0
+        year_details[year_counter]['cgpa'] = 0
+
+    year.sort(cmp=lambda x,y: cmp("%(semester)s%(code)s" % x,
+                                         "%(semester)s%(code)s" % y))
+    year_counter += 1
+
+info['year_details'] = year_details
+info['year_courses'] = year_courses
+
+return info
Index: WAeUP_SRP/trunk/skins/waeup_futminna/transcript_slip.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_futminna/transcript_slip.pt	(revision 5458)
+++ WAeUP_SRP/trunk/skins/waeup_futminna/transcript_slip.pt	(revision 5458)
@@ -0,0 +1,91 @@
+  <metal:body use-macro="here/slip_template/macros/master">
+  <metal:main fill-slot="main"
+              tal:define="info context/getTranscriptInfo;"
+              >
+    <span tal:condition="not: info">
+      <span tal:content="here/illegal_view" />
+    </span>
+    <span tal:condition="info">
+    <span tal:define= "is_so context/isSectionOfficer;
+                       is_ca context/isCourseAdviser;
+                       is_student info/is_student;
+                       with_score not: info/without_score|nothing;
+                       ">       
+
+    <h3> 
+        Transcript of <span tal:content="info/student_record/name" />:
+      <br />
+    </h3>
+
+      <span tal:omit-tag=""
+            tal:content="structure python: info['app_doc'].render(proxy=info['app_doc'],
+            layout_mode='view_info', 
+            layout_id='student_application')" 
+            />
+             
+             
+      <span tal:repeat="details info/year_details">
+      <span tal:define="year_courses info/year_courses;
+                        year python:year_courses[details['year']]"
+            tal:condition="python:len(year)">
+      
+      <br />
+      
+      <h4> Year <span tal:replace="details/year" />  (Session <span tal:replace="details/session" />)</h4>
+     
+      <br />
+      
+      <table  class="contentListing" width="100%" id="folder_content">
+        <tr>
+        <th style='text-align:center'></th> 
+        <th style='text-align:center'>session</th>
+        <th style='text-align:center'>level</th>
+        <th style='text-align:center'>semester</th>
+        <th style='text-align:center'>credits</th>
+        <th tal:condition="with_score" style='text-align:center'>score</th>
+        <th style='text-align:center'>grade</th>
+        <th style='text-align:center'>weight</th>
+        <th style='text-align:center'></th>       
+        </tr>  
+                      
+        <tr tal:repeat="row year"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+          <td style='text-align:center' tal:content="row/code"></td>
+          <td style='text-align:center' tal:content="row/session_id"></td>
+          <td style='text-align:center' tal:content="row/level_id"></td>                    
+          <td style='text-align:center'><span tal:content="row/semester" /></td>
+          <td style='text-align:center' tal:content="row/credits"></td>
+          <td tal:condition="with_score" style='text-align:center'  tal:content="row/score"></td>
+          <td style='text-align:center' tal:content="row/grade"></td>
+          <td style='text-align:center' tal:content="row/weight"></td>
+          <td style='text-align:center' tal:content="row/coe|nothing"></td>
+        </tr>
+      </table>
+
+    <br />
+    <table>
+      <tr tal:condition="details/total_credits" >
+        <td width='200pt'>Total Credits:</td>
+        <td tal:content="details/total_credits" />
+      </tr>
+      <tr tal:condition="details/gpa">
+        <td>GPA:</td> 
+        <td><span tal:content="details/gpa" /></td>
+      </tr>
+      <tr>
+        <td>Cumulative Total Credits:</td>
+        <td tal:content="details/c_total_credits" />
+      </tr>
+      <tr tal:condition="details/cgpa">
+        <td>CGPA:</td> 
+        <td><span tal:content="details/cgpa" /></td>
+      </tr>          
+    </table>      
+
+      </span>
+      </span>
+      </span>
+      </span>      
+  </metal:main>
+</metal:body>
+  
Index: WAeUP_SRP/trunk/skins/waeup_futminna/transcript_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_futminna/transcript_view.pt	(revision 5458)
+++ WAeUP_SRP/trunk/skins/waeup_futminna/transcript_view.pt	(revision 5458)
@@ -0,0 +1,107 @@
+<metal:body use-macro="here/main_template/macros/master">
+  <metal:main fill-slot="main"
+          tal:define="info context/getTranscriptInfo;">
+  <metal:block define-macro="edit_form">   
+              
+    <span tal:condition="not: info">
+      <span tal:content="here/illegal_view" />
+    </span>
+    
+    <span tal:condition="info">
+    <span tal:define= "is_so context/isSectionOfficer;
+                       is_ca context/isCourseAdviser;
+                       is_student info/is_student;
+                       with_score not: info/without_score|nothing;
+                       ">       
+          
+    
+    <a href=""
+       tal:attributes="href string:${here/academicsParent}">
+      <img tal:attributes="src string:${here/portal_url}/arrow_up.gif"/>
+      Up one level
+    </a>
+
+    <div style="text-align: right">
+    <a href="" target="slip" tal:attributes="href string:transcript_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" />
+        Transcript Slip
+    </a>
+    </div>      
+
+    <h3> 
+      <span tal:condition="python: is_so or is_ca">
+        <span tal:content="info/student_record/name" />:
+      </span>
+      <span tal:condition="is_student">My </span> Transcript     
+      <br />
+    </h3>
+             
+      <span tal:repeat="details info/year_details">
+      <span tal:define="year_courses info/year_courses;
+                        year python:year_courses[details['year']]"
+            tal:condition="python:len(year)">
+      
+      <br />
+      
+      <h3> Year <span tal:replace="details/year" />  (Session <span tal:replace="details/session" />)</h3>
+      <br />
+      
+      <table  class="contentListing" width="100%" id="folder_content">
+        <tr>
+        <th style='text-align:center'></th> 
+        <th style='text-align:center'>session</th>
+        <th style='text-align:center'>level</th>
+        <th style='text-align:center'>semester</th>
+        <th style='text-align:center'>credits</th>
+        <th tal:condition="with_score" style='text-align:center'>score</th>
+        <th style='text-align:center'>grade</th>
+        <th style='text-align:center'>weight</th>
+        <th style='text-align:center'></th>       
+        </tr>  
+                      
+        <tr tal:repeat="row year"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+          <td style='text-align:center' tal:content="row/code"></td>
+          <td style='text-align:center' tal:content="row/session_id"></td>
+          <td style='text-align:center' tal:content="row/level_id"></td>                    
+          <td style='text-align:center'><span tal:content="row/semester" /></td>
+          <td style='text-align:center' tal:content="row/credits"></td>
+          <td tal:condition="with_score" style='text-align:center'  tal:content="row/score"></td>
+          <td style='text-align:center' tal:content="row/grade"></td>
+          <td style='text-align:center' tal:content="row/weight"></td>
+          <td style='text-align:center' tal:content="row/coe|nothing"></td>
+        </tr>
+      </table>
+
+        <br />
+        <table>
+          <tr tal:condition="details/total_credits" >
+            <th width='200pt'>Total Credits:</th>
+            <td tal:content="details/total_credits" />
+          </tr>
+          <tr tal:condition="details/gpa">
+            <th>GPA:</th> 
+            <td><span tal:content="details/gpa" /></td>
+          </tr>
+          <tr>
+            <th>Cumulative Total Credits:</th>
+            <td tal:content="details/c_total_credits" />
+          </tr>
+          <tr tal:condition="details/cgpa">
+            <th>CGPA:</th> 
+            <td><span tal:content="details/cgpa" /></td>
+          </tr>          
+        </table>      
+
+      </span>
+      </span>
+
+    <br />
+  </span>
+  </span>        
+  </metal:block>    
+  </metal:main>
+
+</metal:body>
+
