source: WAeUP_SRP/trunk/skins/waeup_custom/logged_in.py @ 779

Last change on this file since 779 was 770, checked in by Henrik Bettermann, 18 years ago

passport_entry_view renamed
layouts modified
and more

File size: 4.2 KB
Line 
1## Script (Python) "logged_in"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=came_from=None
8##title=
9##
10"""Prepare user login
11modified from cps_default/logged_in.py
12
13$Id: logged_in.py 34693 2006-03-23 17:44:22Z ogrisel $
14"""
15import DateTime
16current = DateTime.DateTime()
17
18from urllib import unquote
19
20def checkRedirect(portal, mtool):
21    to_member_home = False
22    to_workspaces = False
23##    has_home = mtool.getHomeFolder()
24##    if has_home:
25##        to_member_home = True
26##    if not has_home and mtool.checkPermission('View', portal.workspaces):
27##        to_workspaces = True
28    return to_member_home, to_workspaces
29
30request = context.REQUEST
31response = request.RESPONSE
32utool = context.portal_url
33mtool = context.portal_membership
34wftool = context.portal_workflow
35portal = utool.getPortalObject()
36portal_absolute_url = portal.absolute_url()
37
38redirect_url = came_from
39redirect_to_portal = False
40to_member_home = False
41to_workspaces = False
42to_waeup_student_home = False
43
44is_anon = mtool.isAnonymousUser()
45member = mtool.getAuthenticatedMember()
46
47if not redirect_url or redirect_url.endswith('/logged_out'):
48    if not is_anon:
49        if "Student" in member.getRoles():
50            to_waeup_student_home = True
51            info = context.getStudentInfo()
52            student = info['student']
53            if info['review_state'] in ("student_created","admitted"):
54                #student.content_status_modify(workflow_action="enter_clearance_pin")
55                wftool.doActionFor(info['app'],'open',dest_container=info['app'])
56                da = {}
57                pin = request.get('pin')
58                app_doc = info['app_doc']
59                da['app_ac_pin'] = pin
60                da['app_ac_date'] = current
61                app_doc.edit(mapping = da)
62                dc = {}
63                dc['clr_ac_pin'] = pin
64                dc['entry_date'] = current
65                dc['session'] = "%s" % current.year()
66                dc['lga'] = app_doc.jamb_lga
67                info['clear_doc'].edit(mapping = dc)
68        elif "Manager" in member.getRoles():
69            pass
70        else:
71            to_member_home, to_workspaces = checkRedirect(portal, mtool)
72    if (not to_member_home) and (not to_workspaces):
73        redirect_to_portal = True
74else:
75    redirect_url = unquote(redirect_url)
76    # One can be redirected from an http page while the login is done from an
77    # https page. This is a fix for #1205.
78    # A better option here would be to replace the previous portal_absolute_url
79    # prefix in the redirect_url by the current portal absolute URL.
80    if not redirect_url.startswith(portal_absolute_url):
81        if not is_anon:
82            to_member_home, to_workspaces = checkRedirect(portal, mtool)
83        if (not to_member_home) and (not to_workspaces):
84            redirect_to_portal = True
85
86if to_waeup_student_home:
87    member.setProperties(last_login_time=current,login_time=current)
88    if info['review_state'] == "application_pin_entered":
89        return response.redirect("%s/application_edit" % student.absolute_url())
90    elif info['review_state'] == "clearance_pin_entered":
91        return response.redirect("%s/clearance_edit" % student.absolute_url())       
92    return response.redirect("%s/student_index" % info['url'])
93
94elif to_member_home:
95    redirect_url = mtool.getHomeFolder().absolute_url()
96elif to_workspaces:
97    redirect_url = portal.workspaces.absolute_url()
98elif redirect_to_portal:
99    redirect_url = portal_absolute_url
100
101REQUEST = context.REQUEST
102RESPONSE = REQUEST.RESPONSE
103
104# Setup skins
105if (getattr(utool, 'updateSkinCookie', False) and
106    utool.updateSkinCookie()):
107    context.setupCurrentSkin()
108
109# Anonymous
110if is_anon:
111    RESPONSE.expireCookie('__ac', path='/')
112    return context.user_logged_in_failed()
113
114login_time = member.getProperty('login_time', '2000/01/01')
115first_time = (str(login_time) == '2000/01/01')
116
117if first_time and member.has_role('Member'):
118    mtool.createMemberArea()
119    now = context.ZopeTime()
120    member.setProperties(last_login_time=now, login_time=now)
121
122if to_member_home or to_workspaces:
123    redirect_url = '%s/?%s' % (redirect_url, 'portal_status_message=psm_logged_in')
124RESPONSE.redirect(redirect_url)
Note: See TracBrowser for help on using the repository browser.