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

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

some fixes and minor modifications for the launching of the accommodation module

File size: 3.8 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'] == "created":
54                student.content_status_modify(workflow_action="enter_application_pin")
55                wftool.doActionFor(info['app'],'open',dest_container=info['app'])
56                da = {}
57                pin = request.get('pin')
58                da['app_ac_pin'] = pin
59                da['app_ac_date'] = current
60                info['app_doc'].edit(mapping = da)
61        elif "Manager" in member.getRoles():
62            pass
63        else:
64            to_member_home, to_workspaces = checkRedirect(portal, mtool)
65    if (not to_member_home) and (not to_workspaces):
66        redirect_to_portal = True
67else:
68    redirect_url = unquote(redirect_url)
69    # One can be redirected from an http page while the login is done from an
70    # https page. This is a fix for #1205.
71    # A better option here would be to replace the previous portal_absolute_url
72    # prefix in the redirect_url by the current portal absolute URL.
73    if not redirect_url.startswith(portal_absolute_url):
74        if not is_anon:
75            to_member_home, to_workspaces = checkRedirect(portal, mtool)
76        if (not to_member_home) and (not to_workspaces):
77            redirect_to_portal = True
78
79if to_waeup_student_home:
80    member.setProperties(last_login_time=current,login_time=current)
81    if info['review_state'] == "application_pin_entered":
82
83        return response.redirect("%s/passport_entry_view" % student.absolute_url())
84    return response.redirect("%s" % student.absolute_url())
85
86elif to_member_home:
87    redirect_url = mtool.getHomeFolder().absolute_url()
88elif to_workspaces:
89    redirect_url = portal.workspaces.absolute_url()
90elif redirect_to_portal:
91    redirect_url = portal_absolute_url
92
93REQUEST = context.REQUEST
94RESPONSE = REQUEST.RESPONSE
95
96# Setup skins
97if (getattr(utool, 'updateSkinCookie', False) and
98    utool.updateSkinCookie()):
99    context.setupCurrentSkin()
100
101# Anonymous
102if is_anon:
103    RESPONSE.expireCookie('__ac', path='/')
104    return context.user_logged_in_failed()
105
106login_time = member.getProperty('login_time', '2000/01/01')
107first_time = (str(login_time) == '2000/01/01')
108
109if first_time and member.has_role('Member'):
110    mtool.createMemberArea()
111    now = context.ZopeTime()
112    member.setProperties(last_login_time=now, login_time=now)
113
114if to_member_home or to_workspaces:
115    redirect_url = '%s/?%s' % (redirect_url, 'portal_status_message=psm_logged_in')
116RESPONSE.redirect(redirect_url)
Note: See TracBrowser for help on using the repository browser.