##// END OF EJS Templates
added admin flag to users editing
added admin flag to users editing

File last commit:

r320:05b21295 default
r329:aafd9a98 default
Show More
settings.py
97 lines | 3.8 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
# encoding: utf-8
# settings controller for pylons
# Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2
# of the License or (at your opinion) any later version of the license.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
"""
Created on June 30, 2010
settings controller for pylons
@author: marcink
"""
from formencode import htmlfill
from pylons import tmpl_context as c, request, url
from pylons.controllers.util import redirect
from pylons.i18n.translation import _
from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAllDecorator
from pylons_app.lib.base import BaseController, render
from pylons_app.lib.utils import invalidate_cache
from pylons_app.model.forms import RepoSettingsForm
from pylons_app.model.repo_model import RepoModel
import formencode
import logging
import pylons_app.lib.helpers as h
log = logging.getLogger(__name__)
class SettingsController(BaseController):
@LoginRequired()
@HasRepoPermissionAllDecorator('repository.admin')
def __before__(self):
super(SettingsController, self).__before__()
def index(self, repo_name):
repo_model = RepoModel()
c.repo_info = repo = repo_model.get(repo_name)
if not repo:
h.flash(_('%s repository is not mapped to db perhaps'
' it was created or renamed from the filesystem'
' please run the application again'
' in order to rescan repositories') % repo_name,
category='error')
return redirect(url('repos'))
defaults = c.repo_info.__dict__
defaults.update({'user':c.repo_info.user.username})
c.users_array = repo_model.get_users_js()
for p in c.repo_info.repo2perm:
defaults.update({'perm_%s' % p.user.username:
p.permission.permission_name})
return htmlfill.render(
render('settings/repo_settings.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False
)
def update(self, repo_name):
print request.POST
print 'x' * 110
repo_model = RepoModel()
_form = RepoSettingsForm(edit=True)()
try:
form_result = _form.to_python(dict(request.POST))
repo_model.update(repo_name, form_result)
invalidate_cache('cached_repo_list')
h.flash(_('Repository %s updated succesfully' % repo_name),
category='success')
except formencode.Invalid as errors:
c.repo_info = repo_model.get(repo_name)
c.users_array = repo_model.get_users_js()
errors.value.update({'user':c.repo_info.user.username})
c.form_errors = errors.error_dict
return htmlfill.render(
render('admin/repos/repo_edit.html'),
defaults=errors.value,
encoding="UTF-8")
except Exception:
h.flash(_('error occured during update of repository %s') \
% form_result['repo_name'], category='error')
return redirect(url('repo_settings_home', repo_name=repo_name))