comparison pylons_app/model/user_model.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 d66a7fa7689b
children a08f610e545e
comparison
equal deleted inserted replaced
473:6b934c9607e7 474:a3d9d24acbec
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # encoding: utf-8 2 # encoding: utf-8
3 # Model for users 3 # Model for users
4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com> 4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
5 5 #
6 # This program is free software; you can redistribute it and/or 6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License 7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; version 2 8 # as published by the Free Software Foundation; version 2
9 # of the License or (at your opinion) any later version of the license. 9 # of the License or (at your opinion) any later version of the license.
10 # 10 #
21 """ 21 """
22 Created on April 9, 2010 22 Created on April 9, 2010
23 Model for users 23 Model for users
24 @author: marcink 24 @author: marcink
25 """ 25 """
26 26 from pylons_app.lib import auth
27 from pylons.i18n.translation import _
28 from pylons_app.lib.celerylib import tasks, run_task
27 from pylons_app.model.db import User 29 from pylons_app.model.db import User
28 from pylons_app.model.meta import Session 30 from pylons_app.model.meta import Session
29 from pylons.i18n.translation import _ 31 import traceback
30 import logging 32 import logging
31 log = logging.getLogger(__name__) 33 log = logging.getLogger(__name__)
32 34
33 class DefaultUserException(Exception):pass 35 class DefaultUserException(Exception):pass
34 36
41 return self.sa.query(User).filter(User.username == 'default').scalar() 43 return self.sa.query(User).filter(User.username == 'default').scalar()
42 44
43 def get_user(self, id): 45 def get_user(self, id):
44 return self.sa.query(User).get(id) 46 return self.sa.query(User).get(id)
45 47
46 def get_user_by_name(self,name): 48 def get_user_by_name(self, name):
47 return self.sa.query(User).filter(User.username == name).scalar() 49 return self.sa.query(User).filter(User.username == name).scalar()
48 50
49 def create(self, form_data): 51 def create(self, form_data):
50 try: 52 try:
51 new_user = User() 53 new_user = User()
52 for k, v in form_data.items(): 54 for k, v in form_data.items():
53 setattr(new_user, k, v) 55 setattr(new_user, k, v)
54 56
55 self.sa.add(new_user) 57 self.sa.add(new_user)
56 self.sa.commit() 58 self.sa.commit()
57 except Exception as e: 59 except:
58 log.error(e) 60 log.error(traceback.format_exc())
59 self.sa.rollback() 61 self.sa.rollback()
60 raise 62 raise
61 63
62 def create_registration(self, form_data): 64 def create_registration(self, form_data):
63 try: 65 try:
66 if k != 'admin': 68 if k != 'admin':
67 setattr(new_user, k, v) 69 setattr(new_user, k, v)
68 70
69 self.sa.add(new_user) 71 self.sa.add(new_user)
70 self.sa.commit() 72 self.sa.commit()
71 except Exception as e: 73 except:
72 log.error(e) 74 log.error(traceback.format_exc())
73 self.sa.rollback() 75 self.sa.rollback()
74 raise 76 raise
75 77
76 def update(self, uid, form_data): 78 def update(self, uid, form_data):
77 try: 79 try:
86 else: 88 else:
87 setattr(new_user, k, v) 89 setattr(new_user, k, v)
88 90
89 self.sa.add(new_user) 91 self.sa.add(new_user)
90 self.sa.commit() 92 self.sa.commit()
91 except Exception as e: 93 except:
92 log.error(e) 94 log.error(traceback.format_exc())
93 self.sa.rollback() 95 self.sa.rollback()
94 raise 96 raise
95 97
96 def update_my_account(self, uid, form_data): 98 def update_my_account(self, uid, form_data):
97 try: 99 try:
107 if k not in ['admin', 'active']: 109 if k not in ['admin', 'active']:
108 setattr(new_user, k, v) 110 setattr(new_user, k, v)
109 111
110 self.sa.add(new_user) 112 self.sa.add(new_user)
111 self.sa.commit() 113 self.sa.commit()
112 except Exception as e: 114 except:
113 log.error(e) 115 log.error(traceback.format_exc())
114 self.sa.rollback() 116 self.sa.rollback()
115 raise 117 raise
116 118
117 def delete(self, id): 119 def delete(self, id):
118
119 try: 120 try:
120 121
121 user = self.sa.query(User).get(id) 122 user = self.sa.query(User).get(id)
122 if user.username == 'default': 123 if user.username == 'default':
123 raise DefaultUserException( 124 raise DefaultUserException(
124 _("You can't remove this user since it's" 125 _("You can't remove this user since it's"
125 " crucial for entire application")) 126 " crucial for entire application"))
126 self.sa.delete(user) 127 self.sa.delete(user)
127 self.sa.commit() 128 self.sa.commit()
128 except Exception as e: 129 except:
129 log.error(e) 130 log.error(traceback.format_exc())
130 self.sa.rollback() 131 self.sa.rollback()
131 raise 132 raise
133
134 def reset_password(self, data):
135 run_task(tasks.reset_user_password, data['email'])