Mercurial > kallithea
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')) |