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 )