Mercurial > public > src > rhodecode
comparison pylons_app/controllers/users.py @ 265:0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 07 Jun 2010 00:18:33 +0200 |
parents | 3782a6d698af |
children | a7608dbe47fc 14478d989870 |
comparison
equal
deleted
inserted
replaced
264:0d68a749db33 | 265:0e5455fda8fd |
---|---|
21 Created on April 4, 2010 | 21 Created on April 4, 2010 |
22 users controller for pylons | 22 users controller for pylons |
23 @author: marcink | 23 @author: marcink |
24 """ | 24 """ |
25 import logging | 25 import logging |
26 from formencode import htmlfill | |
27 from pylons import request, session, tmpl_context as c, url | 26 from pylons import request, session, tmpl_context as c, url |
28 from pylons.controllers.util import abort, redirect | 27 from pylons.controllers.util import abort, redirect |
29 from pylons.i18n.translation import _ | 28 from pylons.i18n.translation import _ |
30 from pylons_app.lib import helpers as h | 29 from pylons_app.lib import helpers as h |
31 from pylons_app.lib.auth import LoginRequired, CheckPermissionAll | 30 from pylons_app.lib.auth import LoginRequired, CheckPermissionAll |
32 from pylons_app.lib.base import BaseController, render | 31 from pylons_app.lib.base import BaseController, render |
33 from pylons_app.model.db import User, UserLog | 32 from pylons_app.model.db import User, UserLog |
34 from pylons_app.model.forms import UserForm | 33 from pylons_app.model.forms import UserForm |
35 from pylons_app.model.user_model import UserModel | 34 from pylons_app.model.user_model import UserModel |
36 import formencode | 35 import formencode |
36 from formencode import htmlfill | |
37 | 37 |
38 log = logging.getLogger(__name__) | 38 log = logging.getLogger(__name__) |
39 | 39 |
40 class UsersController(BaseController): | 40 class UsersController(BaseController): |
41 """REST Controller styled on the Atom Publishing Protocol""" | 41 """REST Controller styled on the Atom Publishing Protocol""" |
63 user_model = UserModel() | 63 user_model = UserModel() |
64 login_form = UserForm()() | 64 login_form = UserForm()() |
65 try: | 65 try: |
66 form_result = login_form.to_python(dict(request.POST)) | 66 form_result = login_form.to_python(dict(request.POST)) |
67 user_model.create(form_result) | 67 user_model.create(form_result) |
68 h.flash(_('created user %s') % form_result['username'], category='success') | 68 h.flash(_('created user %s') % form_result['username'], |
69 return redirect(url('users')) | 69 category='success') |
70 | |
71 except formencode.Invalid as errors: | 70 except formencode.Invalid as errors: |
72 c.form_errors = errors.error_dict | 71 c.form_errors = errors.error_dict |
73 return htmlfill.render( | 72 return htmlfill.render( |
74 render('admin/users/user_add.html'), | 73 render('admin/users/user_add.html'), |
75 defaults=errors.value, | 74 defaults=errors.value, |
76 encoding="UTF-8") | 75 encoding="UTF-8") |
76 except Exception: | |
77 h.flash(_('error occured during creation of user %s') \ | |
78 % form_result['username'], category='error') | |
79 return redirect(url('users')) | |
77 | 80 |
78 def new(self, format='html'): | 81 def new(self, format='html'): |
79 """GET /users/new: Form to create a new item""" | 82 """GET /users/new: Form to create a new item""" |
80 # url('new_user') | 83 # url('new_user') |
81 return render('admin/users/user_add.html') | 84 return render('admin/users/user_add.html') |
87 # Or using helpers: | 90 # Or using helpers: |
88 # h.form(url('user', id=ID), | 91 # h.form(url('user', id=ID), |
89 # method='put') | 92 # method='put') |
90 # url('user', id=ID) | 93 # url('user', id=ID) |
91 user_model = UserModel() | 94 user_model = UserModel() |
92 login_form = UserForm(edit=True)() | 95 _form = UserForm(edit=True)() |
93 try: | 96 try: |
94 form_result = login_form.to_python(dict(request.POST)) | 97 form_result = _form.to_python(dict(request.POST)) |
95 user_model.update(id, form_result) | 98 user_model.update(id, form_result) |
96 h.flash(_('User updated succesfully'), category='success') | 99 h.flash(_('User updated succesfully'), category='success') |
97 return redirect(url('users')) | |
98 | 100 |
99 except formencode.Invalid as errors: | 101 except formencode.Invalid as errors: |
100 c.user = user_model.get_user(id) | 102 c.user = user_model.get_user(id) |
101 c.form_errors = errors.error_dict | 103 c.form_errors = errors.error_dict |
102 return htmlfill.render( | 104 return htmlfill.render( |
103 render('admin/users/user_edit.html'), | 105 render('admin/users/user_edit.html'), |
104 defaults=errors.value, | 106 defaults=errors.value, |
105 encoding="UTF-8") | 107 encoding="UTF-8") |
106 | 108 except Exception: |
109 h.flash(_('error occured during update of user %s') \ | |
110 % form_result['username'], category='error') | |
111 | |
112 return redirect(url('users')) | |
113 | |
107 def delete(self, id): | 114 def delete(self, id): |
108 """DELETE /users/id: Delete an existing item""" | 115 """DELETE /users/id: Delete an existing item""" |
109 # Forms posted to this method should contain a hidden field: | 116 # Forms posted to this method should contain a hidden field: |
110 # <input type="hidden" name="_method" value="DELETE" /> | 117 # <input type="hidden" name="_method" value="DELETE" /> |
111 # Or using helpers: | 118 # Or using helpers: |
112 # h.form(url('user', id=ID), | 119 # h.form(url('user', id=ID), |
113 # method='delete') | 120 # method='delete') |
114 # url('user', id=ID) | 121 # url('user', id=ID) |
122 user_model = UserModel() | |
115 try: | 123 try: |
116 self.sa.delete(self.sa.query(User).get(id)) | 124 user_model.delete(id) |
117 self.sa.commit() | |
118 h.flash(_('sucessfully deleted user'), category='success') | 125 h.flash(_('sucessfully deleted user'), category='success') |
119 except: | 126 except Exception: |
120 self.sa.rollback() | 127 h.flash(_('An error occured during deletion of user'), |
121 raise | 128 category='error') |
129 | |
122 return redirect(url('users')) | 130 return redirect(url('users')) |
123 | 131 |
124 def show(self, id, format='html'): | 132 def show(self, id, format='html'): |
125 """GET /users/id: Show a specific item""" | 133 """GET /users/id: Show a specific item""" |
126 # url('user', id=ID) | 134 # url('user', id=ID) |