Index: WAeUP_SRP/trunk/skins/waeup_student/getMemberInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/getMemberInfo.py	(revision 3836)
+++ WAeUP_SRP/trunk/skins/waeup_student/getMemberInfo.py	(revision 3858)
@@ -37,5 +37,5 @@
 student_id = info['student_id']
 if student_id is None:
-    return None
+    return 'You are not allowed to access this information!'
 
 students_object = context.portal_url.getPortalObject().campus.students
Index: WAeUP_SRP/trunk/skins/waeup_student/login_student.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/login_student.pt	(revision 3836)
+++ WAeUP_SRP/trunk/skins/waeup_student/login_student.pt	(revision 3858)
@@ -58,6 +58,10 @@
 
   </form>
+  
+  <br />
+  
+  <a href=/retrieve_password>Forgot your Id or Password?</a>
 
-  <br />
+  <br /><br />
 
   <p i18n:translate="help_login_aware_logout">
Index: WAeUP_SRP/trunk/skins/waeup_student/retrieve_password.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/retrieve_password.py	(revision 3858)
+++ WAeUP_SRP/trunk/skins/waeup_student/retrieve_password.py	(revision 3858)
@@ -0,0 +1,103 @@
+##parameters=REQUEST
+# $Id: retrieve_password.py 3367 2008-03-21 13:29:31Z henrik $
+"""
+request Clearance
+"""
+import logging
+logger = logging.getLogger('Skins.retrieve_password')
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+from urllib import urlencode
+
+mhost = context.MailHost
+prop = context.portal_properties
+REQUEST = context.REQUEST
+
+
+mtool = context.portal_membership
+is_anon = mtool.isAnonymousUser()
+member = mtool.getAuthenticatedMember()
+lt = context.portal_layouts
+#pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout('retrieve_password',
+                             'retrieve_password',
+                             context,
+                             mapping=validate and REQUEST,
+                             layout_mode='create',
+                             ob={},
+                             commit=False,
+                             formaction = "retrieve_password",
+                             button = "Send Notification Email",
+                             )
+if psm == 'invalid':
+    return context.retrieve_password_form(rendered = res,
+                                 psm = "Please correct your input!",
+                                 #psm = "%s, %s" % (psm,ds),
+                                 firstlayout = True,
+                                 lastlayout = True,
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.retrieve_password_form(rendered = res,
+                                 psm = None,
+                                 firstlayout = True,
+                                 lastlayout = True,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+
+    reg_no = ds.get('reg_no')
+    record = ds.get('record')
+    s_id = record.id
+    pw = context.waeup_tool.getCredential(s_id)
+
+    if is_anon and not s_id:
+        return context.retrieve_password_form(rendered = res,
+                                 psm = "You are not allowed to call this form in this context. Please try to log in.",
+                                 #psm = "%s, %s" % (psm,ds),
+                                 firstlayout = True,
+                                 lastlayout = True,
+                                 ds = ds,
+                                 )
+    elif not is_anon:
+        return context.retrieve_password_form(rendered = res,
+                                 psm = "You are already logged in!",
+                                 #psm = "%s, %s" % (psm,ds),
+                                 firstlayout = True,
+                                 lastlayout = True,
+                                 ds = ds,
+                                 )
+    
+    logger.info('%s successfully retrieved id %s and password %s' % (reg_no,s_id,pw))
+    
+    email = record.email
+    co_name = prop.email_from_name
+    co_email = prop.email_from_address
+    probtype = 'Your Student Id and Password'
+
+    short_msg="""
+    From: %s <%s>
+    To: %s
+    Reply-To: %s
+    Subject: %s
+    Your SRP Member Details
+    -----------------------
+    
+    Fullname: %s
+    Student Id: %s
+    Password: %s
+    
+    """
+    message = short_msg %(co_name,co_email,email,co_email,probtype,record.name,s_id,pw)
+    #mhost.send(message % d)
+
+    return message
+    return context.retrieve_password_form(rendered = res,
+                             psm = "Notification has been sent!",
+                             firstlayout = True,
+                             lastlayout = True,
+                             ds = ds,
+                             )
+        
+
Index: WAeUP_SRP/trunk/skins/waeup_student/retrieve_password_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/retrieve_password_form.pt	(revision 3858)
+++ WAeUP_SRP/trunk/skins/waeup_student/retrieve_password_form.pt	(revision 3858)
@@ -0,0 +1,24 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+  <metal:block 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:block fill-slot="main">
+        <h3>Retrieve Your Student Id and Password! </h3>
+        <br />
+        <div tal:replace="structure rendered_main" />
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
