##// END OF EJS Templates
extended admin rescan to show what repositories was added and what removed...
extended admin rescan to show what repositories was added and what removed fixed found bugs, added expunge to cached getter since it introduce some more problems. Added some relationship to properly clean related objects from database.

File last commit:

r902:07a6e8c6 beta
r1039:51b70569 beta
Show More
permissions.py
171 lines | 6.6 KiB | text/x-python | PythonLexer
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 # -*- coding: utf-8 -*-
"""
some docs updates on controller
r853 rhodecode.controllers.admin.permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 permissions controller for Rhodecode
:created_on: Apr 27, 2010
:author: marcink
fixed copyright year to 2011
r902 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 :license: GPLv3, see COPYING for more details.
"""
renamed project to rhodecode
r547 # 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.
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
implements #60, ldap configuration and authentication....
r705 from rhodecode.lib.auth_ldap import LdapImportError
renamed project to rhodecode
r547 from rhodecode.lib.base import BaseController, render
implements #60, ldap configuration and authentication....
r705 from rhodecode.model.forms import LdapSettingsForm, DefaultPermissionsForm
#50 on point cache invalidation changes....
r692 from rhodecode.model.permission import PermissionModel
implements #60, ldap configuration and authentication....
r705 from rhodecode.model.settings import SettingsModel
Code refactoring,models renames...
r629 from rhodecode.model.user import UserModel
renamed project to rhodecode
r547 import formencode
import logging
import traceback
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')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 @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__()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 self.perms_choices = [('repository.none', _('None'),),
('repository.read', _('Read'),),
('repository.write', _('Write'),),
('repository.admin', _('Admin'),)]
self.register_choices = [
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 ('hg.register.none',
_('disabled')),
renamed project to rhodecode
r547 ('hg.register.manual_activate',
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 _('allowed with manual account activation')),
renamed project to rhodecode
r547 ('hg.register.auto_activate',
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 _('allowed with automatic account activation')), ]
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 self.create_choices = [('hg.create.none', _('Disabled')),
Code refactoring,models renames...
r629 ('hg.create.repository', _('Enabled'))]
renamed project to rhodecode
r547
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 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)
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 permission_model = PermissionModel()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 _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])()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 try:
form_result = _form.to_python(dict(request.POST))
form_result.update({'perm_user_name':id})
permission_model.update(form_result)
implements #60, ldap configuration and authentication....
r705 h.flash(_('Default permissions updated successfully'),
renamed project to rhodecode
r547 category='success')
Code refactoring,models renames...
r629
refactor codes and setup for python 2.5...
r564 except formencode.Invalid, errors:
renamed project to rhodecode
r547 c.perms_choices = self.perms_choices
c.register_choices = self.register_choices
c.create_choices = self.create_choices
implements #60, ldap configuration and authentication....
r705 defaults = errors.value
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/permissions/permissions.html'),
implements #60, ldap configuration and authentication....
r705 defaults=defaults,
renamed project to rhodecode
r547 errors=errors.error_dict or {},
prefix_error=False,
Code refactoring,models renames...
r629 encoding="UTF-8")
renamed project to rhodecode
r547 except Exception:
log.error(traceback.format_exc())
fixed spelling mistakes, and some minor docs bugs
r860 h.flash(_('error occurred during update of permissions'),
renamed project to rhodecode
r547 category='error')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 return redirect(url('edit_permission', id=id))
Code refactoring,models renames...
r629
renamed project to rhodecode
r547
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
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 if id == 'default':
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 default_user = UserModel().get_by_username('default')
defaults = {'_method':'put',
'anonymous':default_user.active}
fixes #77 moved out ldap config to it's own section
r769
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 for p in default_user.user_perms:
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('repository.'):
Code refactoring,models renames...
r629 defaults['default_perm'] = p.permission.permission_name
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('hg.register.'):
defaults['default_register'] = p.permission.permission_name
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('hg.create.'):
defaults['default_create'] = p.permission.permission_name
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/permissions/permissions.html'),
defaults=defaults,
encoding="UTF-8",
Code refactoring,models renames...
r629 force_defaults=True,)
renamed project to rhodecode
r547 else:
return redirect(url('admin_home'))