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)