Mercurial > public > src > rhodecode
comparison pylons_app/controllers/users.py @ 50:73f413946c14
user managment implementation continued update/delete/create works
+ templating changes
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Thu, 08 Apr 2010 03:22:32 +0200 |
parents | 3ada2f409c1c |
children | 25e516447a33 |
comparison
equal
deleted
inserted
replaced
49:3ada2f409c1c | 50:73f413946c14 |
---|---|
5 | 5 |
6 from pylons_app.lib.base import BaseController, render | 6 from pylons_app.lib.base import BaseController, render |
7 from formencode import htmlfill | 7 from formencode import htmlfill |
8 from pylons_app.model import meta | 8 from pylons_app.model import meta |
9 from pylons_app.model.db import Users, UserLogs | 9 from pylons_app.model.db import Users, UserLogs |
10 import crypt | |
10 log = logging.getLogger(__name__) | 11 log = logging.getLogger(__name__) |
11 | 12 |
12 class UsersController(BaseController): | 13 class UsersController(BaseController): |
13 """REST Controller styled on the Atom Publishing Protocol""" | 14 """REST Controller styled on the Atom Publishing Protocol""" |
14 # To properly map this controller, ensure your config/routing.py | 15 # To properly map this controller, ensure your config/routing.py |
15 # file has a resource setup: | 16 # file has a resource setup: |
16 # map.resource('user', 'users') | 17 # map.resource('user', 'users') |
18 | |
17 def __before__(self): | 19 def __before__(self): |
18 c.staticurl = g.statics | 20 c.staticurl = g.statics |
19 c.admin_user = session.get('admin_user') | 21 c.admin_user = session.get('admin_user') |
20 c.admin_username = session.get('admin_username') | 22 c.admin_username = session.get('admin_username') |
21 self.sa = meta.Session | 23 self.sa = meta.Session |
28 return render('/users.html') | 30 return render('/users.html') |
29 | 31 |
30 def create(self): | 32 def create(self): |
31 """POST /users: Create a new item""" | 33 """POST /users: Create a new item""" |
32 # url('users') | 34 # url('users') |
35 params = dict(request.params) | |
33 | 36 |
37 try: | |
38 new_user = Users() | |
39 new_user.active = params.get('active', False) | |
40 new_user.username = params.get('username') | |
41 new_user.password = crypt.crypt(params.get('password'), '6a') | |
42 new_user.admin = False | |
43 self.sa.add(new_user) | |
44 self.sa.commit() | |
45 except: | |
46 self.sa.rollback() | |
47 raise | |
48 | |
49 return redirect(url('users')) | |
50 | |
34 def new(self, format='html'): | 51 def new(self, format='html'): |
35 """GET /users/new: Form to create a new item""" | 52 """GET /users/new: Form to create a new item""" |
36 # url('new_user') | 53 # url('new_user') |
54 return render('/user_add.html') | |
37 | 55 |
38 def update(self, id): | 56 def update(self, id): |
39 """PUT /users/id: Update an existing item""" | 57 """PUT /users/id: Update an existing item""" |
40 # Forms posted to this method should contain a hidden field: | 58 # Forms posted to this method should contain a hidden field: |
41 # <input type="hidden" name="_method" value="PUT" /> | 59 # <input type="hidden" name="_method" value="PUT" /> |
42 # Or using helpers: | 60 # Or using helpers: |
43 # h.form(url('user', id=ID), | 61 # h.form(url('user', id=ID), |
44 # method='put') | 62 # method='put') |
45 # url('user', id=ID) | 63 # url('user', id=ID) |
64 params = dict(request.params) | |
46 | 65 |
66 try: | |
67 new_user = self.sa.query(Users).get(id) | |
68 new_user.active = params.get('active') | |
69 new_user.username = params.get('username') | |
70 print params | |
71 if params.get('new_password'): | |
72 new_user.password = crypt.crypt(params.get('new_password'), '6a') | |
73 self.sa.add(new_user) | |
74 self.sa.commit() | |
75 except: | |
76 self.sa.rollback() | |
77 raise | |
78 | |
79 return redirect(url('users')) | |
80 | |
47 def delete(self, id): | 81 def delete(self, id): |
48 """DELETE /users/id: Delete an existing item""" | 82 """DELETE /users/id: Delete an existing item""" |
49 # Forms posted to this method should contain a hidden field: | 83 # Forms posted to this method should contain a hidden field: |
50 # <input type="hidden" name="_method" value="DELETE" /> | 84 # <input type="hidden" name="_method" value="DELETE" /> |
51 # Or using helpers: | 85 # Or using helpers: |
61 return redirect(url('users')) | 95 return redirect(url('users')) |
62 | 96 |
63 def show(self, id, format='html'): | 97 def show(self, id, format='html'): |
64 """GET /users/id: Show a specific item""" | 98 """GET /users/id: Show a specific item""" |
65 # url('user', id=ID) | 99 # url('user', id=ID) |
66 c.user = self.sa.query(Users).get(id) | 100 |
67 | |
68 return htmlfill.render( | |
69 render('/users_show.html'), | |
70 defaults=c.user.__dict__, | |
71 encoding="UTF-8", | |
72 force_defaults=False | |
73 ) | |
74 | 101 |
75 def edit(self, id, format='html'): | 102 def edit(self, id, format='html'): |
76 """GET /users/id/edit: Form to edit an existing item""" | 103 """GET /users/id/edit: Form to edit an existing item""" |
77 # url('edit_user', id=ID) | 104 # url('edit_user', id=ID) |
105 c.user = self.sa.query(Users).get(id) | |
106 | |
107 return htmlfill.render( | |
108 render('/user_edit.html'), | |
109 defaults=c.user.__dict__, | |
110 encoding="UTF-8", | |
111 force_defaults=False | |
112 ) |