Files
@ a05d16fc1d87
Branch filter:
Location: kallithea/rhodecode/controllers/admin/permissions.py - annotation
a05d16fc1d87
6.4 KiB
text/x-python
Added tag v1.2.1 for changeset 0b8fba8ab90b
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | fb7a3b291e64 fb7a3b291e64 f67868ef6cd2 f67868ef6cd2 6832ef664673 fb7a3b291e64 6832ef664673 fb7a3b291e64 fb7a3b291e64 6832ef664673 fb7a3b291e64 fb7a3b291e64 a671db5bdd58 a671db5bdd58 a671db5bdd58 a671db5bdd58 6832ef664673 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 6832ef664673 1e757ac98988 a671db5bdd58 1e757ac98988 a828b83dfa4b a828b83dfa4b a828b83dfa4b 1e757ac98988 a828b83dfa4b 1e757ac98988 1e757ac98988 1e757ac98988 a828b83dfa4b 1e757ac98988 1e757ac98988 1e757ac98988 a828b83dfa4b cb0d9ce6ac5c a828b83dfa4b 1e757ac98988 1e757ac98988 1e757ac98988 5f2fbab7c429 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 dd532af216d9 dd532af216d9 1e757ac98988 dd532af216d9 1e757ac98988 dd532af216d9 7e536d1af60d 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 5f2fbab7c429 1e757ac98988 9e9f1b919c0c 1e757ac98988 7e536d1af60d ba7e24cd4786 1e757ac98988 1e757ac98988 1e757ac98988 9e9f1b919c0c 7e536d1af60d 1e757ac98988 1e757ac98988 9e9f1b919c0c 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 5f7731e3ab4d 1e757ac98988 7e536d1af60d 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 a828b83dfa4b 5f2fbab7c429 5f2fbab7c429 4bdcc08b04c4 dd532af216d9 1e757ac98988 7e536d1af60d 7e536d1af60d 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7e536d1af60d 1e757ac98988 1e757ac98988 | # -*- coding: utf-8 -*-
"""
rhodecode.controllers.admin.permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
permissions controller for Rhodecode
:created_on: Apr 27, 2010
:author: marcink
:copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
:license: GPLv3, see COPYING for more details.
"""
# 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, either version 3 of the License, or
# (at your option) any later version.
#
# 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, see <http://www.gnu.org/licenses/>.
import logging
import traceback
import formencode
from formencode import htmlfill
from pylons import request, session, tmpl_context as c, url
from pylons.controllers.util import abort, redirect
from pylons.i18n.translation import _
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
from rhodecode.lib.base import BaseController, render
from rhodecode.model.forms import DefaultPermissionsForm
from rhodecode.model.permission import PermissionModel
from rhodecode.model.db import User
log = logging.getLogger(__name__)
class PermissionsController(BaseController):
"""REST Controller styled on the Atom Publishing Protocol"""
# To properly map this controller, ensure your config/routing.py
# file has a resource setup:
# map.resource('permission', 'permissions')
@LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
super(PermissionsController, self).__before__()
self.perms_choices = [('repository.none', _('None'),),
('repository.read', _('Read'),),
('repository.write', _('Write'),),
('repository.admin', _('Admin'),)]
self.register_choices = [
('hg.register.none',
_('disabled')),
('hg.register.manual_activate',
_('allowed with manual account activation')),
('hg.register.auto_activate',
_('allowed with automatic account activation')), ]
self.create_choices = [('hg.create.none', _('Disabled')),
('hg.create.repository', _('Enabled'))]
def index(self, format='html'):
"""GET /permissions: All items in the collection"""
# url('permissions')
def create(self):
"""POST /permissions: Create a new item"""
# url('permissions')
def new(self, format='html'):
"""GET /permissions/new: Form to create a new item"""
# url('new_permission')
def update(self, id):
"""PUT /permissions/id: Update an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="PUT" />
# Or using helpers:
# h.form(url('permission', id=ID),
# method='put')
# url('permission', id=ID)
permission_model = PermissionModel()
_form = DefaultPermissionsForm([x[0] for x in self.perms_choices],
[x[0] for x in self.register_choices],
[x[0] for x in self.create_choices])()
try:
form_result = _form.to_python(dict(request.POST))
form_result.update({'perm_user_name': id})
permission_model.update(form_result)
h.flash(_('Default permissions updated successfully'),
category='success')
except formencode.Invalid, errors:
c.perms_choices = self.perms_choices
c.register_choices = self.register_choices
c.create_choices = self.create_choices
defaults = errors.value
return htmlfill.render(
render('admin/permissions/permissions.html'),
defaults=defaults,
errors=errors.error_dict or {},
prefix_error=False,
encoding="UTF-8")
except Exception:
log.error(traceback.format_exc())
h.flash(_('error occurred during update of permissions'),
category='error')
return redirect(url('edit_permission', id=id))
def delete(self, id):
"""DELETE /permissions/id: Delete an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="DELETE" />
# Or using helpers:
# h.form(url('permission', id=ID),
# method='delete')
# url('permission', id=ID)
def show(self, id, format='html'):
"""GET /permissions/id: Show a specific item"""
# url('permission', id=ID)
def edit(self, id, format='html'):
"""GET /permissions/id/edit: Form to edit an existing item"""
#url('edit_permission', id=ID)
c.perms_choices = self.perms_choices
c.register_choices = self.register_choices
c.create_choices = self.create_choices
if id == 'default':
default_user = User.by_username('default')
defaults = {'_method': 'put',
'anonymous': default_user.active}
for p in default_user.user_perms:
if p.permission.permission_name.startswith('repository.'):
defaults['default_perm'] = p.permission.permission_name
if p.permission.permission_name.startswith('hg.register.'):
defaults['default_register'] = p.permission.permission_name
if p.permission.permission_name.startswith('hg.create.'):
defaults['default_create'] = p.permission.permission_name
return htmlfill.render(
render('admin/permissions/permissions.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=True,)
else:
return redirect(url('admin_home'))
|