comparison pylons_app/controllers/settings.py @ 367:a26f48ad7a8a

fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems. Fixed issue when redirecting after repo name change to 404. Removed update hook from basic app setup
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 27 Jul 2010 14:53:22 +0200
parents b0715a788432
children f5c1eec9f376
comparison
equal deleted inserted replaced
366:0f35fa0f4eb8 367:a26f48ad7a8a
15 # 15 #
16 # You should have received a copy of the GNU General Public License 16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software 17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 # MA 02110-1301, USA. 19 # MA 02110-1301, USA.
20 """
21 Created on June 30, 2010
22 settings controller for pylons
23 @author: marcink
24 """
20 from formencode import htmlfill 25 from formencode import htmlfill
21 from pylons import tmpl_context as c, request, url 26 from pylons import tmpl_context as c, request, url
22 from pylons.controllers.util import redirect 27 from pylons.controllers.util import redirect
23 from pylons.i18n.translation import _ 28 from pylons.i18n.translation import _
24 from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAllDecorator 29 from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAllDecorator
28 from pylons_app.model.repo_model import RepoModel 33 from pylons_app.model.repo_model import RepoModel
29 import formencode 34 import formencode
30 import logging 35 import logging
31 import pylons_app.lib.helpers as h 36 import pylons_app.lib.helpers as h
32 import traceback 37 import traceback
33 """ 38
34 Created on June 30, 2010
35 settings controller for pylons
36 @author: marcink
37 """
38 log = logging.getLogger(__name__) 39 log = logging.getLogger(__name__)
39 40
40 class SettingsController(BaseController): 41 class SettingsController(BaseController):
41 42
42 @LoginRequired() 43 @LoginRequired()
70 force_defaults=False 71 force_defaults=False
71 ) 72 )
72 73
73 def update(self, repo_name): 74 def update(self, repo_name):
74 repo_model = RepoModel() 75 repo_model = RepoModel()
76 changed_name = repo_name
75 _form = RepoSettingsForm(edit=True, old_data={'repo_name':repo_name})() 77 _form = RepoSettingsForm(edit=True, old_data={'repo_name':repo_name})()
76 try: 78 try:
77 form_result = _form.to_python(dict(request.POST)) 79 form_result = _form.to_python(dict(request.POST))
78 repo_model.update(repo_name, form_result) 80 repo_model.update(repo_name, form_result)
79 invalidate_cache('cached_repo_list') 81 invalidate_cache('cached_repo_list')
80 h.flash(_('Repository %s updated succesfully' % repo_name), 82 h.flash(_('Repository %s updated succesfully' % repo_name),
81 category='success') 83 category='success')
82 84 changed_name = form_result['repo_name']
83 except formencode.Invalid as errors: 85 except formencode.Invalid as errors:
84 c.repo_info = repo_model.get(repo_name) 86 c.repo_info = repo_model.get(repo_name)
85 c.users_array = repo_model.get_users_js() 87 c.users_array = repo_model.get_users_js()
86 errors.value.update({'user':c.repo_info.user.username}) 88 errors.value.update({'user':c.repo_info.user.username})
87 return htmlfill.render( 89 return htmlfill.render(
91 prefix_error=False, 93 prefix_error=False,
92 encoding="UTF-8") 94 encoding="UTF-8")
93 except Exception: 95 except Exception:
94 log.error(traceback.format_exc()) 96 log.error(traceback.format_exc())
95 h.flash(_('error occured during update of repository %s') \ 97 h.flash(_('error occured during update of repository %s') \
96 % form_result['repo_name'], category='error') 98 % repo_name, category='error')
97 99
98 return redirect(url('repo_settings_home', repo_name=form_result['repo_name'])) 100 return redirect(url('repo_settings_home', repo_name=changed_name))