comparison pylons_app/controllers/login.py @ 474:a3d9d24acbec celery

Implemented password reset(forms/models/ tasks) and mailing tasks. Added smtp mailer, configurations, cleaned user model
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 13 Sep 2010 01:27:41 +0200
parents 7c978511c951
children
comparison
equal deleted inserted replaced
473:6b934c9607e7 474:a3d9d24acbec
26 from formencode import htmlfill 26 from formencode import htmlfill
27 from pylons import request, response, session, tmpl_context as c, url 27 from pylons import request, response, session, tmpl_context as c, url
28 from pylons.controllers.util import abort, redirect 28 from pylons.controllers.util import abort, redirect
29 from pylons_app.lib.auth import AuthUser, HasPermissionAnyDecorator 29 from pylons_app.lib.auth import AuthUser, HasPermissionAnyDecorator
30 from pylons_app.lib.base import BaseController, render 30 from pylons_app.lib.base import BaseController, render
31 from pylons_app.model.forms import LoginForm, RegisterForm 31 import pylons_app.lib.helpers as h
32 from pylons.i18n.translation import _
33 from pylons_app.model.forms import LoginForm, RegisterForm, PasswordResetForm
32 from pylons_app.model.user_model import UserModel 34 from pylons_app.model.user_model import UserModel
33 import formencode 35 import formencode
34 import logging 36 import logging
35 37
36 log = logging.getLogger(__name__) 38 log = logging.getLogger(__name__)
40 def __before__(self): 42 def __before__(self):
41 super(LoginController, self).__before__() 43 super(LoginController, self).__before__()
42 44
43 def index(self): 45 def index(self):
44 #redirect if already logged in 46 #redirect if already logged in
45 c.came_from = request.GET.get('came_from',None) 47 c.came_from = request.GET.get('came_from', None)
46 48
47 if c.hg_app_user.is_authenticated: 49 if c.hg_app_user.is_authenticated:
48 return redirect(url('hg_home')) 50 return redirect(url('hg_home'))
49 51
50 if request.POST: 52 if request.POST:
80 prefix_error=False, 82 prefix_error=False,
81 encoding="UTF-8") 83 encoding="UTF-8")
82 84
83 return render('/login.html') 85 return render('/login.html')
84 86
85 @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate', 87 @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate',
86 'hg.register.manual_activate') 88 'hg.register.manual_activate')
87 def register(self): 89 def register(self):
88 user_model = UserModel() 90 user_model = UserModel()
89 c.auto_active = False 91 c.auto_active = False
90 for perm in user_model.get_default().user_perms: 92 for perm in user_model.get_default().user_perms:
97 register_form = RegisterForm()() 99 register_form = RegisterForm()()
98 try: 100 try:
99 form_result = register_form.to_python(dict(request.POST)) 101 form_result = register_form.to_python(dict(request.POST))
100 form_result['active'] = c.auto_active 102 form_result['active'] = c.auto_active
101 user_model.create_registration(form_result) 103 user_model.create_registration(form_result)
104 h.flash(_('You have successfully registered into hg-app'),
105 category='success')
102 return redirect(url('login_home')) 106 return redirect(url('login_home'))
103 107
104 except formencode.Invalid as errors: 108 except formencode.Invalid as errors:
105 return htmlfill.render( 109 return htmlfill.render(
106 render('/register.html'), 110 render('/register.html'),
108 errors=errors.error_dict or {}, 112 errors=errors.error_dict or {},
109 prefix_error=False, 113 prefix_error=False,
110 encoding="UTF-8") 114 encoding="UTF-8")
111 115
112 return render('/register.html') 116 return render('/register.html')
113 117
118 def password_reset(self):
119 user_model = UserModel()
120 if request.POST:
121
122 password_reset_form = PasswordResetForm()()
123 try:
124 form_result = password_reset_form.to_python(dict(request.POST))
125 user_model.reset_password(form_result)
126 h.flash(_('Your new password was sent'),
127 category='success')
128 return redirect(url('login_home'))
129
130 except formencode.Invalid as errors:
131 return htmlfill.render(
132 render('/password_reset.html'),
133 defaults=errors.value,
134 errors=errors.error_dict or {},
135 prefix_error=False,
136 encoding="UTF-8")
137
138 return render('/password_reset.html')
139
114 def logout(self): 140 def logout(self):
115 session['hg_app_user'] = AuthUser() 141 session['hg_app_user'] = AuthUser()
116 session.save() 142 session.save()
117 log.info('Logging out and setting user as Empty') 143 log.info('Logging out and setting user as Empty')
118 redirect(url('hg_home')) 144 redirect(url('hg_home'))